【发布时间】:2011-01-03 17:37:52
【问题描述】:
我有以下代码:
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 值。为什么?
【问题讨论】:
-
请参考按值调用和按引用调用的区别。
-
在方法 swap 中,您传递的是对象的“值”,而不是对实际对象的引用,无论您在 swap 方法中做什么,都不会影响变量 a 和 b。
标签: java