2015-06-20 215 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); 
} 
相關問題