如何在Java方法中交换两个int的值?

时间:2015-06-20 08:35:55

标签: java

在Java中,原始数据类型参数似乎将按值传递给方法。但是,如果我想交换两个整数的值,该怎么办?

public static void main(String[] args){
   int a = 1;
   int b = 2;
   swapvalue(a,b);
   System.out.println(a);
   System.out.println(b);    
}

public static void swapValue(int a, int b){
   int c = a;
   a = b;
   b = c;
}

例如,上面的代码旨在交换a和b的值。在C ++中,我可以传入指针或对它们的引用,但我不知道如何在没有指针的情况下在Java中执行此操作。我怎么能做到?

1 个答案:

答案 0 :(得分:2)

您无法通过将它们传递给方法来交换它们。

你可以做的最接近的事情是将int []传递给方法,并交换数组的元素:

public static void main(String[] args){
   int[] arr = {1,2};
   swapValues(arr);
   System.out.println(arr[0]);
   System.out.println(arr[1]);    
}

public static void swapValues(int[] arr){
   int c = arr[0];
   arr[0] = arr[1];
   arr[1] = c;
}

另一种选择是用一些可变类包装它们:

public class IntHolder
{
    private int value;
    ...
}

public static void main(String[] args){
   IntHolder a = new IntHolder(1);
   IntHolder b = new IntHolder(2);
   swapValue(a,b);
   System.out.println(a.getInt());
   System.out.println(b.getInt());    
}

public static void swapValue(IntHolder a, IntHolder b){
   int c = a.getInt();
   a.setInt(b.getInt());
   b.setInt(c);
}