2015-06-20 95 views
0

在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中执行此操作。我怎么能做到的?

回答

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); 
} 
相关问题