java中字符串常量池中的对象
在上述程序中创建了多少个对象?转换成大写字符串后,我看到了4个对象,但根据scjp手册,答案是3。我不明白为什么只有3个物体是3个物体java中字符串常量池中的对象,java,scjp,ocpjp,Java,Scjp,Ocpjp,在上述程序中创建了多少个对象?转换成大写字符串后,我看到了4个对象,但根据scjp手册,答案是3。我不明白为什么只有3个物体是3个物体 public class NewClass { public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); retur
public class NewClass {
public String makinStrings() {
String s = "Fred";
s = s + "47";
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
}
如果看到substring()
和toUpperCase()
的源代码,它将返回一个新字符串和s+“47”
由于s
的值是在运行时确定的,因此它将创建新字符串,因此总共有3个对象
s=“Fred”
s=s+47代码>=>s=Fred47
s=s子串(2,5)代码>=>s=ed4
s=s.toUpperCase()代码>=>s=ED4
请参考此处750个“此代码创建了多少字符串”问题中的任意一个。他们中的一些人对所发生的事情有非常透彻的描述,我们最不需要的就是另一个了。@realponsignist,我的观点是正确的。有人能解释一下投票失败的原因吗?我说错话了吗?对不起,我不得不删除它作为回答,因为我投了反对票,这让我觉得可能是你的回答错了。是的,即使是我也希望人们发表评论,而不是在我已经接受它作为一种选择的情况下仅仅否决投票answer@Aniket:我想出了同样的方法,总共有4个对象,但答案是只创建了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