下面是一个Java程序。该程序将创建多少个字符串对象
public String makinStrings() {
String s = “Fred”;
s = s + “47”;
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
如何找出在String池中创建了多少个String对象。我认为有4个对象是 - “Fred”,“Fred47”,“ed4”,“ED4”。这是正确的假设吗?
下面是一个Java程序。该程序将创建多少个字符串对象
public String makinStrings() {
String s = “Fred”;
s = s + “47”;
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
如何找出在String池中创建了多少个String对象。我认为有4个对象是 - “Fred”,“Fred47”,“ed4”,“ED4”。这是正确的假设吗?
对于Java版本7:
分配“弗雷德”开头将不会创建新的对象,因为它将取自literal pool
总结 - 3字符串已创建,每个方法调用。该字符串是一个对象,因此返回它不会创建新的 - 它通过引用完成。
为什么你认为'toUpperCase()'不会创建一个新的字符串? – xehpuk
当然,它会 - 我已经被建议在参考文献中没有明确的信息。问题是重复的http://stackoverflow.com/questions/7370593/how-many-string-objects-will-be-created顺便说一句,但我不能标记它的一些奇怪的原因 - 我编辑答案正确的一个(因为我现在也不能删除它......呃)。无论如何感谢您的警告 –
你正在使用什么版本的java –
可能重复[将创建多少个字符串对象](http://stackoverflow.com/questions/7370593/how-many-string-objects-will-be-created) – xehpuk