您好。我根本不懂java,在不久的将来也不想研究它。但是我有很多朋友都是java程序员,而且从对话中我了解到Java中没有C#的ref关键字的模拟。这让我想知道如何编写一个在Java中交换两个整数的函数。我的朋友(虽然不是很好的java专家)无法编写这样的功能。这是否正式不可能?请注意,我理解一个人可以在没有函数的情况下交换两个整数,问题就在于编写一个带有两个整数并交换它们的函数。提前谢谢。
答案 0 :(得分:4)
简短:你做不到。
Long:您需要一些解决方法,例如将它们包装成可变数据类型,例如数组,例如:
public static void swap(int[] a, int[] b) {
int t = a[0]; a[0] = b[0]; b[0] = t;
}
但是它没有相同的语义,因为你交换的实际上是数组成员,而不是a和b本身。
答案 1 :(得分:4)
在Java中,所有参数都按值传递。所以没有ref
。
但是,您可以通过在对象(或数组)中使用值来实现变量交换。
public class Holder<T> {
public T value = null;
public Holder(T v) { this.value = v; }
}
public static <T> void swap(Holder<T> a, Holder<T> b) {
T temp = a.value; a.value = b.value; b.value = temp;
}