【发布时间】:2014-03-08 09:34:14
【问题描述】:
我知道在座的所有人都知识渊博,而且通常很擅长解释,所以我想请教一下。
我看过一些关于按值传递和按引用传递语言之间区别的帖子和文章,它们让我对如何实现交换方法感到非常好奇。这是特别有趣的,因为学校项目和个人项目都在/将使用交换方法来工作。我确实在 this question 中找到了 Marcus 提出的一个相当新颖的解决方案,如果我找不到另一个解决方案,我会使用它。
我的理解是不可能实现以下内容并因此产生x = 5, y = 10:
int x = 10; int y = 5;
swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
public static void main(String[] args) {
swap(x, y);
//x = 10, y = 5
System.out.println("x was 10 and y was 5");
System.out.println("Now x is " + x + ", and y is " + y);
}
但是,据我所知,以下将起作用,因为 x 和 y 未通过:
int x = 10; int y = 5;
swap() {
int temp = x;
x = y;
y = temp;
}
public static void main(String[] args) {
swap();
//x = 5, y = 10
}
如何交换两个原语?那么同一个对象的两个实例呢(我只需要交换字段/变量)?在数组中交换时我必须考虑什么特别的事项吗?
【问题讨论】: