在java中有两种方式创建字符串
1.字面量方式创建字符串
String name = "tom";
2.new关键字创建字符串
String name2 = new String("jerry");
Java中的String pool(字符串常量池)
String pool是java堆内存(heap memory)中的存储字符串的一块区域。
A:
当使用字面量的方式创建字符串时,虚拟机会检查字符串池中的字符串,如果有相同的字符串,那么并不会为新的字符串分配内存空间,而是令它指向字符串常量池中已经存在的那个字符串。这样做的好处是节省了内存的消耗。
注意使用字面量的方式创建的字符串是存储在字符串常量池中的。
如:
String name = "tom";
String name2 = "tom";

当使用new关键字时,
String name3 = new String("tom");
String name4 = new String("tom);
就在java堆内存中创建了一个新的字符串,而不管在字符串池中是否已经存在。
使用new关键字方法每一次都会在堆内存中创建新的字符串。这个字符串对象会一直待在java堆内存中直到被垃圾收集器收集,显然这会影响性能。
注意使用new关键字创建的字符串不存储在字符串常量池中,而是直接在堆内存中。
