- 方法重载是名称相同,但是参数列表不同,需要注意的是,如果两个方法只有返回值不同的话这两个方法在编译器看来是同一个函数。
- 抽象方法不能有方法体,也就是不允许有具体的实现
- List是一个有序的集合,可以粗放重复的数据,它的有序值得是存进去是什么顺序,取出来就是什么顺序。
- ArrayList的实现底层是数组,而LinkList的底层实现是双向链表,所以如果需要随机访问,用ArrayList会更好,如果是LinkList的话适合删除或者插入(从底层数据结构出发)
- vectir底层和ArrayList的底层是一样的,但是Vector是线程安全的,效率比较低所以很少使用到
- set是一个无需集合,不允许放重复数据,并且它不可重复,存入和存出的数据会不一样
- hashSet的底层是哈希表,TreeSet继承sortedSet接口,可以按照存进去的元素大小排序
- HashMap可以存null减和Null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()或者equals方法可以保证键的唯一性。(因为哈希表需要解决冲突,所以他的元素顺序是无序的)
- 线程安全的意思就是线程同步,可以同步访问
- 在需要使用栈或者队列的时候适合使用Vector,而如果需要快速随机访问的话推荐使用ArrayList
- 当数据需要增长的时候,Vector默认增长一倍,ArrayList默认增长%
- ==用于比较基本数据类型的时候比较的是值,用于比较引用数据类型的时候比较的是引用指向的地址,object中equals的作用相同,比较的都是指向的地址,但是String类重写了equals方法,所以比较的是对象中的内容
- String有两种创建方式
String str2 = "aaaa";
这种是在常量池中获取对象,因此编译时期会在常量池里面创建一个数据串对象。如果常量池里面有这个数据串对象就直接引用
String str2 = new String("aaaa");
这种方式会创建两个字符串,堆里面创建一个字符串对象,常量池里面创建一个字符串对象。前面的两种方法的“aaaa”就会让常量池在没有这个字符串对象的时候进行创建
-
String的易错点
字符串拼接: String a = "a"; String b = "b"; //常量池中的对象(不会创建 StringBuilder 对象) String str1 = "a" + "b"; //在堆上创建的新的对象 String str2 = a + b; //常量池中的对象(不会创建 StringBuilder 对象) String str3 = "ab"; System.out.println(str1 == str2);//false System.out.println(str1 == str3);//true System.out.println(str2 == str3);//false
Java面试题知识点1
于 2024-03-09 21:19:44 首次发布