当前位置: 代码迷 >> Java相关 >> 关于append()问题
  详细解决方案

关于append()问题

热度:281   发布时间:2007-02-15 21:01:21.0
关于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
}
}
搜索更多相关的解决方案: append  StringBuffer  public  operator  println  

----------------解决方案--------------------------------------------------------
这个问题已经是老声长谈了 呵呵
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里面是没有对象克隆的,传的都是引用的拷贝

明白了这点以后,就可以知道为什么了
----------------解决方案--------------------------------------------------------

遇到这种题目 我就头大
慢慢体会了


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