class Exchange{
int a,b;
void exchange(int a, int b){
this.a=a;
this.b=b;
int temp = this.a;
this.a=this.b;
this.b=temp;
}
}
public class TestBasicParameter{
public static void main(String[] args){
int x = 10;
int y = 20;
System.out.println(“交换前,x=” + x + “;y=” + y);
Exchange test=new Exchange();
test.exchange(x,y);
System.out.println(“交换后,x=” + x + “;y=” + y);
}
}
无法改变,因为只是开了个新堆,并没有改变你栈里面的值
class Exchange{
int a,b;
void exchange(Exchange u){
int temp = u.a;
u.a=u.b;
u.b=temp;
}
}
public class TestClassParameter2{
public static void main(String[] args){
Exchange test=new Exchange();
test.a=10;
test.b=20;
System.out.println(“交换前,test.a=” + test.a + “;test.b=” + test.b);
test.exchange(test);
System.out.println(“交换后,test.a=” + test.a + “;test.b=” + test.b);
}
}
改变了,因为在栈里面搞了个新值去传递,从栈传递回来了。