关于java的null比如a=null;以下说法哪种正确?1)a在栈里 其引用的一段内存空间处于堆中,但是这段内存空间虽

关于java的null
比如a=null;
以下说法哪种正确?
1)a在栈里 其引用的一段内存空间处于堆中,但是这段内存空间虽然是存在着的,但是里面没有存储任何内容。
2)a在栈里,其没有引用堆中的任何内存空间,即a本身就是一个null
一知半解的人闪开 对知识掌握谨慎、严格、准确的人来帮忙解答
fujchcghk 1年前 已收到1个回答 举报

我的陌生世界 幼苗

共回答了15个问题采纳率:93.3% 举报

首先java对象的产生是分两步的:
1.在栈区声明对象 如A a,这时声明的内容相当于一个指针(我们姑且认为它是一个指针,也可以理解为引用),当a=null时表明这是一个没有指向任何对象.
2.实例化a,操作如下a=new A()这是在堆区为a分配了空间.
也就是由栈区的a指向堆区的new A()对象.
而a=null则是表明,首先,a是必然在栈区的,a的值是一个地址(假设它真的是一个指针),a=null表示的是a的值是null,与堆区无关
此时的a与堆并无关系,何况java中有一种申请垃圾回收的手段便是将一个对象赋值为null以切断与之前关联对象的关系,因此答案应该是2.

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.035 s. - webmaster@yulucn.com