栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

每日一练进击大厂【DAY2】JAVA基础2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每日一练进击大厂【DAY2】JAVA基础2


弥补一下昨天的缺失,给自己加个课


文章目录
  • 一、String、StringBuffer、StringBuilder区别
  • 二、String str="i";和String str = new String("i");区别
  • 三、String常用的方法
  • 四、List、Set、Map
  • 五、ArrayList和LinkedList区别
  • 六、ArrayList和Vector的区别
  • 七、Comparator和Comparable区别
  • 八、JAVA8新特性
  • 总结


一、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():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 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 包主要包含了处理⽇期、时间、⽇期/时间、时区、时刻和时钟等操作。


总结

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号