由于字符串对象的大量使用[它是一个对象,一般而言对象总是在heap分配内存],Java中为了节省内存空间和运行时间[如比较字符串时,==比equals()快],在编译阶段就把所有的字符串文字放到一个文字池[pool of literal strings]中,而运行时文字池成为常量池的一部分。文字池的好处,就是该池中所有相同的字符串常量被合并,只占用一个空间。
放入堆内存了。
昨天提的,现在给出看到的总结
Sring s = new String("abc");语句,这里"abc"本身就是poo(池)l中的一个对象,而在运行时执行new String()时,将pool中的对象复制一份放到heap(推)中,并且把heap中的这个对象的引用交给s持有,这里s只是变量持有者,并不是一个对象.所以,这条语句就创建了2个String对象
String s1 = new String("abc") ;
String s2 = new String("abc") ;按上面的方法可以推出创建了三个String Object (pool中一个,head中两个)
pool和head对应老毕的视频讲课中经常画图的栈和推