另一个考试的问题,这让我感到困惑:String对象计数SCJP
public String makinStrings() {
String s = “Fred”;
s = s + “47”;
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
的问题是: “?有多少String对象时,调用此方法将创建”
正确的答案应该是3,但是我统计了:
弗雷德
Fred47
ED4
ED4
是3真的是正确的答案?如果是这样 - 为什么?
从Java语言规范[常量池自Java 7以来已移至Java堆](http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html#jdk7changes),以及之前该池在热点JVM上位于'permgen space'中。 – 2015-02-24 12:26:49
这并不排除字符串常量在方法调用过程中没有实例化的事实,但是当类被实例化时,是不是? – 2015-02-25 23:59:19
Nopes它不排除,但评论是在您的缓存内存概念提到的答案的前一个版本...... – 2015-02-26 09:27:46