我有以下Java代码:
public String makinStrings() {
String s = "Fred";
s = s + "47";
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
Run Code Online (Sandbox Code Playgroud)
问题有点简单:String调用此方法时将创建多少个对象?
一开始我回答说创建了5个String对象,但是我的书中的答案说只创建了3个对象而没有给出解释(这是一个SCJP问题).
从我的观点来看,有5个对象:"Fred","47","Fred47","ed4","ED4".
我也在SCJP模拟考试中找到了这个问题,答案相同3.
Joa*_*uer 15
"Fred"和"47"将来自字符串文字池.因此,在调用方法时不会创建它们.相反,它们将在加载类时放在那里(或者更早,如果其他类使用具有相同值的常量).
"Fred47","ed4"和"ED4"是String将在每次方法调用时创建的3个对象.