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