交换两个整数的函数

时间:2010-10-10 19:28:57

标签: java

  

可能重复:
  How to write a basic swap function in Java

您好。我根本不懂java,在不久的将来也不想研究它。但是我有很多朋友都是java程序员,而且从对话中我了解到Java中没有C#的ref关键字的模拟。这让我想知道如何编写一个在Java中交换两个整数的函数。我的朋友(虽然不是很好的java专家)无法编写这样的功能。这是否正式不可能?请注意,我理解一个人可以在没有函数的情况下交换两个整数,问题就在于编写一个带有两个整数并交换它们的函数。提前谢谢。

2 个答案:

答案 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;
}