在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中执行此操作。我怎么能做到?
答案 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);
}