精華區beta java 關於我們 聯絡資訊
※ 引述《butterflyy.bbs@zoo.badcow.com.tw (最愛牛牛了!)》之銘言: > 就我所知 java 並沒有這個 features,那它是如何實作出 > String str3 = str + str2; > 呼叫 append() 嗎? 的確 Java 沒有讓你自訂 operator overloading. 但並不代表在 Java 中沒有 operator overloading. String 的 + 的確是 Java 中 (唯一的) operator overloading 的例子. + primitive type 會把 primitive type 轉成 String (我猜是用 其 wrapper class 的 toString 吧) 再 append. 而 + 各類 object 的話, 則是 append obj.toString(). Alien -- ┌─────程式設計樂園─────┐ KKBOX 可立刻 聽音樂 ■ CSZone.kkcity.com.tw ■■所有想找的歌通通不必等 ■■ └──From:203.218.221.24 ──┘ http://www.kkbox.com.tw > -------------------------------------------------------------------------- < 作者: tkcn (小安) 看板: java 標題: Re: [問題] + 的問題 時間: Thu Mar 9 23:49:16 2006 ※ 引述《seekyou (galagala~￾N )》之銘言: 我想你可能有些誤會了 所以我重新寫個例子提供你參考 int a = 5; System.out.print("a = " + a); 這樣執行結果會是: a = 5 書本上說 + 是用來連接印出的資料, 但其實應該說的更精確些。 System.out.print() 所能接受的參數是 "一個" String(字串), (當然,有可能是其他參數,但是這裡先不提) 而 "a = " + a 的前半段 "a = " 是一個 String, 後半段 a 卻是一個 int, 經由 + 這個運算子,會形成一個新的 String,也就是 "a = 5"。 現在看下一個例子 int a = 5; System.out.print("2*a = " + a + a); 我期望程式要印出 2*a = 10 , 但是實際執行的結果卻是 2*a = 55 , 哪裡出了問題呢? 原來是在 compile 時,"2*a = " + a 會先被處理, 也就是形成新的 String: "2*a = 5", 於是新的式子變成 "2*a = 5" + 5 所以結果自然就變成了 2*a = 55 。 所以在這種情況下,如果你希望 a+a 能夠先被處理,就必須加上括號。 "2*a = " + (a + a) 至於你程式所出現的錯誤訊息, 只是你的 括號 或著 引號 沒有成對,導致 compiler 不知道怎麼處理罷了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.69.23