Re: [J2SE] Java String觀念請教?
※ 引述《Harifucks (就是要戰腦殘保險業務)》之銘言:
: ※ 引述《Harifucks (就是要戰腦殘保險業務)》之銘言:
: : 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
: : 明天公布正確答案
: 我選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 個
這樣解釋不知道可不可以@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.166
※ 編輯: AI3767 來自: 140.123.105.166 (05/01 15:04)
討論串 (同標題文章)