Given:
public String makinStrings() {
String s = “Fred”;
s = s + “47”;
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
How many String objects will be created when this method is invoked?
A. 1
B. 2
C. 3
D. 4
E. 5
F. 6
答案选C?
其中
String s = “Fred”;
s = s + “47”;
s = s.toUpperCase();
三行都相当于new了String objects。
因为String采用了共享内存的方案,所以当String的值改变时就相当于new了object,而s.substring(2, 5); 只是改变了读取原object的哪位而已,并不创建新的object。