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