String的不变性及避免创建不必要对象
至于String为什么设计为final的好处:多线程中不用考虑锁带来性能的影响,所以在创建String时,由于String的不可变性,应尽量避免创建不必要的对象,如下
for(int i = 0; i < Integer.MAX_VALUE; i++) { String s = "String"; }
创建多个对象,(堆中内存几乎不动且未发生GC),这省略了很多内存。
然而,若通过下面方式(会造成堆内存多次创建对象并发生多次gc):
for(int i = 0; i < Integer.MAX_VALUE; i++) {
String s = new String ("String");
}