String,StringBuilder,StringBuffer的区别:
- String是不可变的字符串;
- StringBuffer:可变字符串、效率低、线程安全;
- StringBuilder:可变字符序列、效率高、线程不安全。
问答:
为什么String是不可变的?
答:如,String s = “ABCDE”;这句代码,s只是一个String对象得引用,并不是对象得本身,对象在内存中是一块内存区,成员变量越多,这块内存占的空间就越大。引用只是一个4字节得数据,里面存放了它所指向得对象得地址,通过这个地址可以访问对象。也就是说,s只是一个引用,它指向一个具体的对象,当我们又创建了一个新的对象“FGHIJK”并赋给s,那么s就重新指向了这个新的对象,而原来的“ABCDE"并没有变。