将数组传递给方法

Passing Array to method

我有简单的代码场景:

class Demo
{ 
  static void check(int z[])
 {
   z=null;
 } 

}

class arrNullCheck
{
  public static void main(String args[])
 {
    int arr[]={2,3,4,5};

    Demo.check(arr);

    for(int i=0;i<4;i++)
     {
       System.out.print(arr[i]);

      }     
  }
}

根据我的说法,这个程序应该在运行时抛出空指针异常,因为 z 等于 null,但是输出如下:

Output: 2 3 4 5

如果我像这样更新方法:

 static void check(int z[])
 {
   z[0]=9;
 } 

然后它将按预期更新值为 9 的数组。那为什么 null 在这里不起作用?

不,它不会抛出异常。 Java 是一种按值传递 语言,引用也是按值传递的。您也不能重新设置引用。 z 是对 arr 的引用的 copy,当您在方法中重新分配给 null 时,您只是更改了 null 的值本地副本而不是原始副本arr