| 
 public class Foo {  | 
|
![]() 4分  | 
 y=x; 
这一句没有任何意义,这只是改变了局部变量的指向,并没有修改哪一个对象,所以对外部无影响。 而且永远不要对局部变量进行赋值操作(如a = b),尽量不要修改局部变量的值(如a++),除非你200%地清楚你在干什么,并且这样做非常必要。  | 
![]() 12分  | 
public static void operator(StringBuffer x,StringBuffer y){
               // x 的拷贝变为了AB,x 的拷贝和x 指向同一个内存地址,所以x 变为了AB
              x.append(y); 
               //  y 的拷贝指向了x 的拷贝的地址,也就是x 的地址,那么y 的拷贝将不再影响y 的指向
              //  所以 y 的值依然为B 
              y=x;                
}
记着一点就行了,java传递的是拷贝,在方法内改变了拷贝的指向,那么后面做的任何事情都不影响原值了  | 
![]()  | 
 java中只有传值,后面的y=x 相当于y引用了x的位置 但没有改变值 
 | 
![]() 4分  | 
 我是这样理解的: 
public class Foo { public static void main(String[] args) { StringBuffer a=new StringBuffer(“A”); //开辟一块内存 id=21 StringBuffer b=new StringBuffer(“B”); //开辟一块内存 id=25 operator(a,b); System.out.println(a+”,”+b); //打印出来内容是 内存地址的存放内容 } //注意了。id21,id25两个StringBuffer传过来 public static void operator(StringBuffer x,StringBuffer y){ x.append(y); //这个操作,id21的值变成了‘AB’ // y.append(x); 在y=x既是改变y的id之前,你试试 ,输出不一样哦 y=x; //这个操作,把y的id由id25变成id21,之后操作y也不会改变id25的值 // y.append(x); 在y=x既是改变y的id之后,你试试 ,输出不一样哦 } } 建议:多理解基础,这都是原理的东西  | 
![]()  | 
 明白 了,就是传值 的时候只是原对象的一份拷贝,拷贝的指向并不会改变原对象的指向  | 
                    
