[英]objects in String constant pool in java
public class NewClass {
public String makinStrings() {
String s = "Fred";
s = s + "47";
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
}
在上面的程序中创建了多少个对象? 转换为大写字符串后,我看到有4个对象,但是根据scjp书,答案是3个。 我不明白为什么只有三个对象
s = "Fred"
s = s+47;
=> s = Fred47
s = s.substring(2,5);
=> s = ed4
s = s.toUpperCase();
=> s = ED4
是3个对象
String s = "Fred"; // created in pool
s = s + "47"; // created in heap
s = s.substring(2, 5); // created in heap
s = s.toUpperCase(); // created in heap
如果看到substring()
和toUpperCase()
的源,它将返回一个新字符串,并带有s + "47";
由于s
的值是在运行时确定的,因此它将创建新的字符串,因此共有3个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.