小弟在做scjp习题时遇到的一个问题……
题目如下:
public String makinStrings(){
String s= "Fred ";
s=s+ "42 ";
s=s.substring(2,5);
s=s.toUpperCase();
return s.toString();
}
How many String objects will be created when method is invoked?
A.1
B.2
C.3
D.4
E.5
F.6
答案给的是C,我不太明白,请高手指点,谢谢了!
------解决方案--------------------String类是final的,可以看成常量,所以 "Fred "和 "42 "其实在编译期已经存在,而正因为String是final的,所以String类的操作又都回产生新object
所以s=s+ "42 ", s=s.substring(2,5)及s=s.toUpperCase()均会产生新的String object
s.toString()返回本身,不存在新建object的问题