2017-05-31 Java字符串

Java里字符串存在于两个地方:字符串常量池和堆中。 如果 String str = “Hello” 则str在常量池中。如果 String str = new String(“Hello, world”),那么str在堆中,但是常量池里也会创建”Hello,world”。

String类是不可变的。 String类的+操作都是在调用StringBuilder,所以+的结果都存在于堆中。

Java7之前字符串常量池在永久代中,7及以后在堆中。

字符串还是比较复杂的,和Java内存模型也有关,还有很多不清楚的

Written on May 31, 2017