java程序:错在哪里? 谁能告诉我以下程序错在哪? What is the result of

java程序:错在哪里?
谁能告诉我以下程序错在哪?
What is the result of attempting to compile and run the
following program ?

class IM{
static void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
public static void main(String args[ ])
{
int a = 1;
int b = 2;
swap(a, b);
System.out.print(a +","+b );
}

}

输出 a=1 b=2 ;
这类运算 a b 的值始终不变,虽然你把值传过去了 相当于 复制了一次a b ,交换的只是复制的那一份a b 真实的 a b仍在main方法里面 始终不变
(可以用克隆来解释,虽然是一样的 即便你把自己的克隆体消灭了 但是你的本体还是自己 不受克隆体的任何影响)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
每个方法都有一个方法栈,栈中有局部变量表,其中保存了方法中的局部变量和形参变量,这些变量随方法退出而消亡。而且方法形参是实参的副本(x和y是a和b复制出来的)。所以x,y和a,b其实已经没有关系了
第2个回答  2014-11-07
a,b是值类型,不是引用行,你传入方法的是值,你写的交换是没有用的,直接
int temp = a;
a=b;
b = temp;
第3个回答  2014-11-07
接过就是 1,2追问

?什么意思

追答

What is the result of attempting to compile and run the
following program ? 翻译就是 这个程序最后的结果是什么? 结果就是 打印 1,2

第4个回答  2014-11-07

相似回答