下面是代码:
public class Demo {
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operator(a,b);
System.out.println(a+","+b);
}
public static void operator(StringBuffer x,StringBuffer y){
y=x;
}
}
输出的结果A,B
为什么 operator 方法里的操作没有生效、能不能给出以下验证的方法
在传递参数中,分别把a b所指向的地址的副本传递给了x y, x指向了A,y指向了B, 后面改变了y的指向,但对a,b并未有印象。如果是y.append() 那么b的值会有变化。
你应该把stringbuffer看成一个数据类型,只有传递对象的引用时,改变引用的值才会影响对象本身
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
大哥、能不能跟我说一下 这里的 细节,我在看 java 源码的时候没有什么重大 发现
不管事值传递还是引用传递,传递的都是副本。y=x改变了副本指向的地址,副本本身没有变化