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

看板java作者 (!H45)時間19年前 (2006/06/16 09:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/6 (看更多)
※ 引述《pieapple (社會新鮮人)》之銘言: : Given: : public class Foo : { : public static void main(String[] args) : { : StringBuffer a = new StringBuffer("A"); : StringBuffer b = new StringBuffer("B"); : operate(a,b); ^^^^^^^^^^^^^ b=operate(a,b); : System.out.println(a + "," + b}; : } : static void operate(StringBuffer x , StringBuffer y) : { : x.append(y); : y=x; ^^^^ return x; : } : } : 小弟執行後的結果是輸出:AB,B : 但我有些搞亂為什麼b的值是B,而不是AB。 : operate(a,b)之後,a會變成"AB",但b卻還是"B" : 請各位前輩賜教,謝謝! 修改之後 b=operate(a,b) a會變成"AB",b也會變成"AB"了 (同一個位址) 區域變數(x,y)的改變並不能連帶改變上一層變數(a,b) 也就是y=x; 不會連帶造成b=a; x.append(y)並沒有改變區域變數(x,y) 而是改變x所指向的實體位址的成員欄位 所以這個函式呼叫沒有問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.207.15
文章代碼(AID): #14aWjfZw (java)
討論串 (同標題文章)
文章代碼(AID): #14aWjfZw (java)