1.”==“和equals方法的区别?
- ==操作符,对于基本数据类型变量,比较的是两个值是否相等,而对于引用类型,比较的是引用的内存的首地址,即引用同一个对象。
- Obeject的equalls方法,根据具体业务有开发者对其进行重写。2.
2.String,StringBuilder,StringBuffer区别
- String是内容不可变的字符串,底层使用 final char[]数组, StringBuffer和StringBuilder底层使用的数组没有final关键字。
- 执行速度上 String<StringBuffer<StringBuilde,String对象创建后不可更改,当你用“+”连接另一个字符串的时候,其实jvm是有重新创建了一个对象,将这两个东西又装了进去。
- StirngBuilder线程不安全,效率高,StringBuffer中很多方法可以带synchronized关键字,线程安全,效率低。
3.ArrayList和LinkedList的区别和使用场景
- ArrayList和LinkedList都实现了java.util.List(支持泛型,可存放各种类型的对象),Cloneable(支持克隆), java.io.Serializable(支持序列化)。
- 都不是线程安全的,若要在多线程中调用他们,可使用Collection.synchronizedList方法
- ArrayList底层使用数组,LinkdLlist底层是双向链表,数组具有随机访问特点,能查询特定的元素,但是插入删除和修改比较慢