菜鸟教程中,java数组测验第一题,为什么不是空指针异常呢,这里的栈和堆关系是怎样的?
题目描述
这是一道来自菜鸟教程的java数组测试题目,路径是:
https://c.runoob.com/quiz/5571
我觉得是空指针异常,但是答案是:1 2 3 4 5
相关代码
class TestIt
{
public static void main ( String[] args )
{
int[] myArray = {1, 2, 3, 4, 5};
ChangeIt.doIt( myArray );
for(int j=0; j<myArray.length; j++)
System.out.print( myArray[j] + " " );
}
}
class ChangeIt
{
static void doIt( int[] z )
{
z = null ;
}
}
调用了doIt方法,不是将myArray赋值null了吗?不就意味着堆中的数组对象与myArray引用失去了联系吗,我的思维陷进去了[笑哭]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为java里方法参数都是 复制 的,内容相同但不是同一个
题主的例子里,
z
和myArray
内容相同,都是对同一个数组对象的引用,但不是同一个引用,因此对z
的赋值操作并不会影响到myArray