您的位置 首页 java

每日一练进击大厂「DAY2」JAVA基础2

文章目录

  • 一、 String StringBuffer StringBuilder 区别
  • 二、String str=”i”;和String str = new String(“i”);区别
  • 三、String常用的方法
  • 四、List、Set、 map
  • 五、ArrayList和LinkedList区别
  • 六、ArrayList和 Vector 的区别
  • 七、Comparator和Comparable区别
  • 八、 java 8新特性
  • 总结

一、String、StringBuffer、StringBuilder区别

  1. 三者都是用来处理 字符串 的。
  2. 字符在字符串中的 索引 都是从0开始的。
  3. String是字符串常量,StringBuffer、StringBuilder是字符串变量。
  4. StringBuilder效率高,是 线程 非安全的。
  5. StringBuffer是线程安全的,但是效率比StringBuilder要低。
  6. 提供的 length ()、 charAt ()、 subString ()方法且用法相同。
  7. String连接字符串用“+”,StringBuffer和StringBuilder连接字符串用 append 方法追加。
  8. String的equals()方法比较的是内容,StringBuffer和StringBuilder的equals()方法比较的是地址。
  9. String创建的对象不可变,StringBuffer和StringBuilder创建的对象是可变的。
  10. String的 toString ()方法返回的是当前String实例的引用,StringBuffer和StringBuilder的toString()方法返回的是以当前StringBuffer和StringBuilder实例为内容的新的String实例的引用。
  11. 操作少量的数据建议用String,单线程字符串缓冲区下操作大量数据建议用StringBuilder, 多线程 字符串缓冲区下操作大量数据建议用StringBuffer。

二、String str=“i”;和String str = new String(“i”);区别

String str=“i”; JAVA虚拟机 将其分配到常量池中,而常量池中没有重复的元素,JAVA虚拟机会先在常量池中检索是否已经有”i”,如果有那么将”i”地址赋给变量str,如果没有就创建一个新的然后把地址赋值给变量str。这种情况会创建0个或者1个对象。
String str = new String(“i”);JAVA虚拟机将其分配到堆内存中,即使内容一样,还是会创建新的对象,如果常量池中没有,还会创建一个对象放到常量池中,所以这种情况可能会创建1个或者2个对象。

三、String常用的方法

indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace ():字符串替换。
trim ():去除字符串两端空白。
split ():分割字符串,返回一个分割后的字符串数组。
get Bytes ():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成 小写字母
toUpperCase ():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。

四、List、Set、Map

  1. List与Set具有相似性,他们都是单列元素的集合,它们有一个共同的父接口,Collection。
  2. Set不允许有重复的元素,Set取元素的时候,不能按照索引来取,只能以iterator接口取的所有元素再逐一遍历各个元素, 所以Set是无序的,并且不重复的。
  3. list表示有先后顺序的集合并且是可重复的,除了可以用iterator接口取得所有元素,还可以使用get(index)方法来明确取第几个。 所以list是有序并且可重复的。
  4. Map是双列的集合,每次存储时,要以key、value的形式来存储,不能存储重复的key,可以根据key获得相应的value,也可以获得所有的key的集合,还可以获得所有value的集合,获得key和value组合成的Map.Entry对象的集合。

五、ArrayList和LinkedList区别

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于双向循环链表的数据结构。
  2. 对于随机访问ge和set,ArrayList要优于LinkedList,因为LinkedList要移动指针。
  3. 对于新增和删除操作add、remove,LinkedList比较占优势,因为ArrayList要遍历全部的数据。

六、ArrayList和Vector的区别

  1. 两个类都实现了list接口,他们都是有序集合,相当于一种动态数组。
  2. Vector是线程安全的,而ArrayList是线程不安全的。
  3. Vertor扩容默认增长原来两倍,ArrayList是1.5倍扩容。
  4. ArrayList效率更高,Vector效率相对低一点,因为Vector有加锁机制,

七、Comparator和Comparable区别

  1. 都是用于比较两个对象顺序的接口。
  2. 都可以使用 Collection .sort()方法来对对象集合进行排序。
  3. Comparable在java.lang包下,而Comparator在java.util包下。
  4. Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部实现的排序。
 //如果参数字符串等于此字符串,则返回值 0;
//如果此字符串小于字符串参数,则返回一个小于 0 的值 -1;
//如果此字符串大于字符串参数,则返回一个大于 0 的值 1;
public class ComparableTest implements Comparable {
    @Override
    public int compareTo(Object o) {
        return 0;
    }
}

  
 //如果返回 1  说明o1 > o2 如 2  1
//如果返回 0  说明o1 = o2如 cc  cc
//如果返回 -1 说明o1 < o2如 6  7
public class ComparatorTest implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        return 0;
    }
}
  

八、JAVA8新特性

lambda 表达式 :允许把函数作为参数传递到⽅法,简化匿名内部类代码。
函数式接⼝:使⽤ @FunctionalInterface 标识,有且仅有⼀个抽象⽅法,可被隐式转换为 lambda 表达式。

 @FunctionalInterface
public interface Test {
     void  sayHello(String msg);
}

public class JDK8Test {
    public  static  void main(String[] args) {
        Test test = msg -> System.out.println("hello"+msg);
        test.sayHello("测试");
    }
}
  

⽅法引⽤:可以引⽤已有类或对象的⽅法和构造⽅法,进⼀步简化 lambda 表达式。
接⼝:接⼝可以定义 default 修饰的默认⽅法,降低了接⼝升级的复杂性,还可以定义静态⽅法。
注解:引⼊重复注解机制,相同注解在同地⽅可以声明多次。注解作⽤范围也进⾏了扩展,可作⽤于局部变量、 泛型 、⽅法异常等。
类型推测:加强了类型推测机制,使代码更加简洁。
Optional 类:处理空指针异常,提⾼代码可读性。
Stream 类:引⼊函数式编程⻛格,提供了很多功能,使代码更加简洁。⽅法包括 forEach 遍历、count统计个数、filter 按条件过滤、limit 取前 n 个元素、skip 跳过前 n 个元素、map 映射加⼯、concat合并 stream流等。
⽇期:增强了⽇期和时间 API,新的 java.time 包主要包含了处理⽇期、时间、⽇期/时间、时区、时刻和时钟等操作。


总结

人人都有一个进大厂的梦,希望以上的内容能够对你我这样的人有所帮助。

文章来源:智云一二三科技

文章标题:每日一练进击大厂「DAY2」JAVA基础2

文章地址:https://www.zhihuclub.com/186606.shtml

关于作者: 智云科技

热门文章

网站地图