1.ArrayList与LinkList的区别
ArrayList底层是由array与list实现。array是一个基于index的索引数据结构。查询和搜索效率快。list实现自动扩容,list的初始大小是10,每次扩容二分之一,第二次容量为15.扩容是通过新建一个数组,然后将原有的数据copy of 到新数组。arrayList既有array快速查询的性能也有list的自动扩容功能。LinkList是一个双链表,在添加和删除的性能上比arraylist快,但查询上arraylist更快。
2.hashmap
hashmap是采用数组加链条,jdk8加红黑树的数据结构。键值对的数据结构,key唯一,值无序,线程不安全。key值唯一是通过key的hashcode方法和eq确认,也是通过key的hashcode值进行存储。数组存放的是key,value,next的entry。
3.为什么有int还需要integer
int的默认值是0,而integer的默认值是空,int无法表示空
java的绝大部分方法都是用来处理对象的,如ArrayList只能处理对象
对象封装可以把属性也就是数据跟数据处理这些数据的方法结合在一起,比如integer有paresleint方法。
4.String stringbuffer stringbuilder区别
string是一个字符串,是一个对象,底层代码是一个final类型的字符数组,所以每次对string的操作都会生成新的string对象
stringbuffer和stringbuilder都实现了abstracstringbuilder对象,abstracstringbuilder又实现了charsequence接口,两个类都实现了对字符串的操作,所以修改,删除,拼接比string效率高
stringbuffer线程安全stringbuilder线程不安全,stringbuilder比stringbuffer效率高,stringbuffer比stringbuilder安全
5.equals和==区别
==比较的变量,内存中存放对象的地址,用来判断两个对象的地址是否相同
equals用了比较两个对象的内容是否相同
6.final在java中的作用
修饰变量,变量不可改变 修饰方法方法不可重写
修饰对象,对象不可继承 修饰常量会编译阶段存入常量池