小弟刚学习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);
}
}
第一次发帖~~希望高手指点~
变量就是容器,假设某个超市(就是函数)它提供一种功能,给你交换两个容器中的东西.实际情况是这样的:超市有自己的容器(函数的参数),你给它东西的时候,是把东西倒进它们的容器里(因为是基本变量,只把里边的东西倒(复制)过去),然后超市就交换它的两容器里的东西,用来A杯装牛奶,B杯装酒,换成了
B杯装牛奶,A装酒,但它并没有改变你的杯子里的东西啊.你调用它的时候只是复制了值.你的杯子里装的还是原来的东西代码的顺序:
自己的东西
复制给超市(调用函数)
输出自己杯子里的东西.
超市没有改变自己杯子里的东西,所以没有完成交换,因为是各自的杯子.
推荐文章:http://www.hudong.com/wiki/java%E4%BC%A0%E5%80%BC%E5%92%8C%E4%BC%A0%E5%BC%95%E7%94%A8
{
int x=10;
int y = 20;
System.out.println(x=y + (y=x)*0);
System.out.println("x="+x);
System.out.println("y="+y);
}这样就可以直接出来了