class Swap{
public Swap(int x,int y){
int temp = x;
x = y;
y = temp;
}
public static void main(String [] args){
int a = 2,b = 3;
System.out.println("a="+a+" b="+b);
new Swap(a,b);
System.out.println("a="+a+" b="+b);
}
}两次输出的结果怎么都是a=2, b=3 了
为什么没变化?
public Swap(int x,int y){
int temp = x;
x = y;
y = temp;
}
public static void main(String [] args){
int a = 2,b = 3;
System.out.println("a="+a+" b="+b);
new Swap(a,b);
System.out.println("a="+a+" b="+b);
}
}两次输出的结果怎么都是a=2, b=3 了
为什么没变化?
传到里去的时候把a的值2给了别一个变量x,把b的值3给了y,
x 与 a 并没有什么联系,
y 与 b也 一样,所以在方法里对x与y怎么改变都不会影响到a与b
你构造函数里的修改了交换了x(a)y(b)的的值,但是你出来的时候并没有影响ab的值,所以ab原来是什么值还是什么值
public Swap(int x,int y){
System.out.println("x="+x+" y="+y);
int temp = x;
x = y;
y = temp;
System.out.println("x="+x+" y="+y);
}
public static void main(String [] args){
int a = 2,b = 3;
System.out.println("a="+a+" b="+b);
new Swap(a,b);
System.out.println("a="+a+" b="+b);
}
}
x , y的作用范围只是在构造器里头
出了构造器的大括号就消失了
而a , b也是
出了main函数也就消失了
它们传值的时候只是把值拷贝到x , y上
而不是把它们本身给传过去了