Re: [問題] 關於StringBuffer與區域變數
※ 引述《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■■■
--
討論串 (同標題文章)
完整討論串 (本文為第 5 之 6 篇):