小弟刚学习JAVA时间不长,遇到一个问题,希望各位前辈能够指教
当主函数调用CHANGE方法之后,为什么原来已经交换数值的变量没有变化?
public class NewChange{
public static void main(String args[]){
int x=10;
int y=20;
NewChange.change(x,y);
System.out.println("x="+x+",y="+y);
}
public static void change(int x,int y){
int z=0;
z=x;
x=y;
y=z;
System.out.println("x="+x+",y="+y);
}
}
第一次发帖~~希望高手指点~
当主函数调用CHANGE方法之后,为什么原来已经交换数值的变量没有变化?
public class NewChange{
public static void main(String args[]){
int x=10;
int y=20;
NewChange.change(x,y);
System.out.println("x="+x+",y="+y);
}
public static void change(int x,int y){
int z=0;
z=x;
x=y;
y=z;
System.out.println("x="+x+",y="+y);
}
}
第一次发帖~~希望高手指点~
lz自己去了解一下吧
这样理解会深刻一点thx
public static void main(String args[]){
int[] x = new int[]{10};
int[] y = new int[]{20};
change(x,y);
} public static void change(int[] x,int[] y){
int[] z= new int[1];
z[0]=x[0];
x[0]=y[0];
y[0]=z[0];
System.out.println("x="+x[0]+",y="+y[0]);
}
}
y = x ^ y;
x = x ^ y;
你调用方法是属于值传递,所以不会得到你想要的值
public static void main(String args[]){
int x=10;
int y=20;
NewChange.change(x,y); //这个 x ,y 是会交换值的!
System.out.println("x="+x+",y="+y); /*这两个x,y是成员变量,不能用change()方法里面的x,y改变成员变量的值~~楼主不知道你现在懂了没?主要是值传递/引用传递的区别
*/
}
public static void change(int x,int y){
int z=0;
z=x;
x=y;
y=z;
System.out.println("x="+x+",y="+y);
}
}