append是什么意思java_关于append()问题

关于append()问题

public class Test {

public static void main(String args[]){

StringBuffer a=new StringBuffer("A");

StringBuffer b=new StringBuffer("B");

operator(a,b);

System.out.println(a);//输出是AB 这里为什么能输出AB呢 方法不是传过去的只是值吗 如果传的不是值那为什么下面的确输出的是B呢

System.out.println(b);//输出是B

}

public static void operator(StringBuffer x,StringBuffer y){

x.append(y);

System.out.println(x);//输出是AB

y=x;

System.out.println(y);//输出是AB

}

}----------------解决方案--------------------------------------------------------

这个问题已经是老声长谈了 呵呵

new StringBuffer("A");这个对象你操作了append所以打印ab

new StringBuffer("B");这个对象你没对他做任何操作,所以他还是b

感觉说的像废话

----------------解决方案--------------------------------------------------------

只要真正明白JAVA里面的方法中的参数是如何传递的,楼主的疑问就解决了.

operator(a,b);就相当于:

程序代码:

{

StringBuilder x =a;

StringBuilder y =b;

x.append(y);

System.out.println(x);//输出是AB

y=x;

System.out.println(y);//输出是AB

}

显然,执行之后:

a里面保存了"AB";

b里面保存的还是"B";

代码中的y=x根本对a,b(指这两个引用)没有影响,so...

----------------解决方案--------------------------------------------------------

但是操作append的是x不是a啊

x和a有不可能指向一个对象如果指向一个对象那下面的y和b也应该是指向同一个对象为什么System.out.println(b);打印的不是AB而是B呢

----------------解决方案--------------------------------------------------------

以下是引用Eastsun在2007-2-15 21:46:04的发言:

只要真正明白JAVA里面的方法中的参数是如何传递的,楼主的疑问就解决了.

operator(a,b);就相当于:

程序代码:

{

StringBuilder x =a;

StringBuilder y =b;

x.append(y);

System.out.println(x);//输出是AB

y=x;

System.out.println(y);//输出是AB

}

显然,执行之后:

a里面保存了"AB";

b里面保存的还是"B";

代码中的y=x根本对a,b(指这两个引用)没有影响,so...

x.append(y);

这个为什么会有影响呢

----------------解决方案--------------------------------------------------------

唔,楼主还是好好想想吧.

或者自己写一些简单的代码验证一下自己的想法.

自己想清楚了,就再也不会有疑问了.

偶该说的已经说了,就不多说了.

----------------解决方案--------------------------------------------------------

其实在JAVA里面到处都是传值,只不过传引用的时候传的是引用的复制值而已,所以你改变引用的指向并不会改变实据数据,但是你用引用去改变东西却能反应出来

这点你要自己好好体会一下

----------------解决方案--------------------------------------------------------

LZ还是把值的传递和对对象的克隆看一下吧!

----------------解决方案--------------------------------------------------------

在JAVA里面是没有对象克隆的,传的都是引用的拷贝

明白了这点以后,就可以知道为什么了

----------------解决方案--------------------------------------------------------

遇到这种题目 我就头大

慢慢体会了

----------------解决方案--------------------------------------------------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值