Re: [J2SE] Java String觀念請教?

看板java作者 (AI3767)時間17年前 (2008/05/01 15:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/6 (看更多)
※ 引述《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)
文章代碼(AID): #186Miy5K (java)
討論串 (同標題文章)
文章代碼(AID): #186Miy5K (java)