2014-10-22 97 views
-1

我想知道爲什麼輸出仍然爲1,2,3,4,5,因爲如果我更改doIt(例如:z[0] = 10)中的值,則數組會發生更改。Java數組通過引用

public class Main 
{ 
    public static void main(String[] args) { 
     int[] array = {0,1,2,3,4,5}; 
     testIt.doIt(array); 

     for(int i=0;i<array.length;i++){ 
      System.out.println(array[i]); 
     } 
    } 
} 

class testIt 
{ 
    public static void doIt(int [] z){ 
     z = null  
    } 
} 
+1

閱讀本文http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value/40523#40523 – 2014-10-22 06:39:50

回答

1

這裏

doIt傳遞數組引用的副本,並且不能改變原始參考做出原始陣列沒有差別。

1

doIt傳遞數組引用的拷貝,所以它不能改變它的原始參考(存儲在array變量)。它只能改變這個引用引用的對象的狀態。因此在doIt之內設置z爲空,在該方法之外沒有任何區別。