2014-10-22 51 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为空,在该方法之外没有任何区别。