将数组传递给方法
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
。
我有简单的代码场景:
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
。