我有以下代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它打印a = 2 b = 1,但它打印相反.显然交换方法不会交换a和b值.为什么?
Svi*_*ish 50
这与整数的不变性无关; 它与Java是Pass-by-Value,Dammit 这个事实有关!(没有恼火,只是文章的标题:p)
总结一下:你无法在Java中实现交换方法.您只需自己进行交换,无论您需要它; 这反正只是三行代码,所以不应该是那么多问题:)
Thing tmp = a;
a = b;
b = tmp;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26328 次 |
| 最近记录: |