我有简单的代码场景:
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的数组。为什么在这里没有工作呢?
答案 0 :(得分:0)
不,它不会抛出异常。 Java是按值传递语言,引用也按值传递。您也无法重置参考。 z
是对arr
的引用的副本,当您在方法中重新分配给null
时,您只是更改了本地副本而不是原始arr
。