日期:2014-05-20  浏览次数:20583 次

关于java的基础知识的一道题
下面程序运行之后,变量x的值是( )。
......
//swap方法的声明
public static void swap(int a,int b){
  int t=a;
  a=b;
  b=t;
}
//main方法
public static void main(String args[]){
int x=2;
int y=3;
swap(x,y);
}

运行之后X的值为什么仍为2呢?


------解决方案--------------------
这个问题问了很多遍了,LZ知道什么叫值传递吗?
LZ知道什么是变量吗?知道变量有自己的内存空间吗?
LZ觉得main方法的x,y和swap方法的a,b是相同的变量吗?
main方法的x,y和swap方法的a,b是不同的变量,它们有自己的内存空间,方法调用,只是把x,y的内存的值复制给swap方法的a,b,所以改变swap方法的a,b只是改变swap方法的a,b的内存的信息,并不影响x,y的内存信息.这样解释,LZ能明白吗?

------解决方案--------------------
探讨
下面程序运行之后,变量x的值是( )。
......
//swap方法的声明
public static void swap(int a,int b){
int t=a;
a=b;
b=t;
}
//main方法
public static void main(String args[]){
int x=2;
int y=3;
swap(x,y);
这里a接收的是x的复制值,传递的不是x的本身,采用的是数值传递。如果运用引用传递swap(&x,&y);,传递的是x的地址的话,就是你所说的了……