Re: [問題] 關於StringBuffer與區域變數

看板java作者時間19年前 (2006/06/16 02:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
※ 引述《pieapple.bbs@ptt.cc (社會新鮮人)》之銘言: > Given: > public class Foo > { > public static void main(String[] args) > { > StringBuffer a = new StringBuffer("A"); > StringBuffer b = new StringBuffer("B"); > operate(a,b); > System.out.println(a + "," + b}; > } > static void operate(StringBuffer x , StringBuffer y) > { > x.append(y); > y=x; > } > } > 小弟執行後的結果是輸出:AB,B > 但我有些搞亂為什麼b的值是B,而不是AB。 > operate(a,b)之後,a會變成"AB",但b卻還是"B" > 請各位前輩賜教,謝謝! 簡單說, java 是 pass-by-value 的. b 傳進去 operate, 裡面改變了 y 的值 (不是 改變 y 指著的object 裡的值), 外面的 b 是不會 受影響的 Alien -- ┌─────KKCITY─────┐ KKBOX 可立刻 聽音樂 ■ bbs.kkcity.com.tw ■■所有想找的歌通通不必等 ■■ └──From:203.218.221.83 ──┘ http://www.kkbox.com.tw --
文章代碼(AID): #14aQ4F00 (java)
討論串 (同標題文章)
文章代碼(AID): #14aQ4F00 (java)