看板java
标 题Re: [问题] 关於StringBuffer与区域变数
发信站KKCITY (Thu Jun 15 22:36:06 2006)
转信站ptt!ctu-reader!ctu-peer!news.nctu!nctumenews!news.ind.ntou!news.ntu!bb
※ 引述《[email protected] (社会新鲜人)》之铭言:
> 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■■■
--