※ 引述《AI3767 (AI3767)》之銘言:
: ※ 引述《Harifucks (就是要戰腦殘保險業務)》之銘言:
: : 我選D,但是答案是C,有人可以解釋嗎?
: : 出處:Testkiller SCJP 5,第91題
: 我的想法是, Java 會有String spool,
: 至少有 "Fred" 和 "47" 這兩個在裡面
: String s = "Fred";
: 實際上是將 s 變數bind到 "Fred" 物件上
: 而 "Fred" 並非是在這個method中才產生的, 所以不能算在題目要的1次
: s = s+"47";
: 則是runtime的事情, 會產生新的物件形成 "Fred47"
: s = s.substring(2,5);
: 特別去看了source code,確定是產生新的物件
: 因為源碼是使用建構式去產生
: s = s.toUpperCase();
: 因為java大小寫有差, 這裡還是得要產生都是大寫的物件
: s.toString();
: 既然是String了, toString()的用意就是要一個表示該物件的String,
: String主要就是用來表示String的, 所以這個method就是回傳自己
: 所以我覺得應該是 3 個
: 這樣解釋不知道可不可以@@
我也是這麼覺得,
不過如果再詳細去看 toUpperCase() 的說明:
http://java.sun.com/javase/6/docs/api/java/lang/String.html#toUpperCase()
"... This method is equivalent to toUpperCase(Locale.getDefault())."
會發現有牽扯到 Locale.getDefault() 的實作,
如果再進一步去追一下它的 source code,
就會發現其實還有機會產生其他的 String objects.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.175.144.62
討論串 (同標題文章)