我有以下代码:
public class Main {
static void swap (Integer x, Integer y) {
Integer t = x;
x = y;
y = t;
}
public static void main(String[] args) {
Integer a = 1;
Integer b = 2;
swap(a, b);
System.out.println("a=" + a + " b=" + b);
}
}
我希望它打印 a=2 b=1,但它打印相反。显然,交换方法不会交换 a 和 b 值。为什么?
这与整数的不变性没有任何关系;这与以下事实有关Java 是按值传递的,该死! http://javadude.com/articles/passbyvalue.htm (没有生气,只是文章的标题:p)
总结一下:在 Java 中你无法真正创建交换方法。您只需在需要的地方自行进行交换即可;无论如何,这只是三行代码,所以应该不是什么大问题:)
Thing tmp = a;
a = b;
b = tmp;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)