1. ==和equals的区别
基本类型和封装类比较 == 是封装类自动拆箱
简单类型 == 是比较内容
常量池 是byte的范围 (-128-127)
equals 默认引用的是object的方法 先比较类型 ,再比较内容。
2. String和StringBuilder的区别?
string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。
每次对string的修改 都会产生一个新的String对象(一个新的空间)
Stringbuffer 每次对他的修改 都是再原来的地址上修改。
大量拼接的 用Stringbuilder 接值的时候用String
3. StringBuffer和StringBuilder的区别?
线程不安全的的条件
a:多线程
b:有共享对象
c:共享对象有状态,共享对象可变的
d:没加索
单反违反上面四个条件,都是线程安全的。
StringBuilder 单线程是安全的
1.线程安全
StringBuffer:线程安全,StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 synchronized 修饰。
2.缓冲区
StringBuffer 每次获取 toString 都会直接使用缓存区的 toStringCache 值来构造一个字符串。
StringBuilder 则每次都需要复制一次字符数组,再构造一个字符串。
所以, StringBuffer 对缓存区优化,不过 StringBuffer 的这个toString 方法仍然是同步的
3.性能
既然 StringBuffer 是线程安全的,它的所有公开方法都是同步的,StringBuilder 是没有对方法加锁同步的,所以毫无疑问,StringBuilder 的性能要远大于 StringBuffer。
4. TreeSet和HashSet的区别?
因为都是set的子类,Set具有元素不可重复性,所以TreeSet和hashset都不可放2个相同的元素
TreeSet底层是TreeMap实现的 ,很多api都是利用TreeMap来实现的
HashSet底层是HashMap实现的,很多api都是利用HashMap来实现的
5. Collection和Collections的区别?
java.util.Collection是一个集合接口
它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。
Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
java.util.Collections 是一个包装类
Collections类的定义:public class Collections extends Object
它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
Collections类与Collection没有直接的关系,但是与集合中的各个接口都有操作的方法支持