日期:2014-05-20  浏览次数:20618 次

小弟在做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的问题