首页 新闻 会员 周边

Java中是否给null值分配了内存空间?

0
悬赏园豆:10 [待解决问题]

Java新人,今天试着运行了这段代码:
(https://img2022.cnblogs.com/q/2399952/202203/2399952-20220304171058268-1259491345.jpg)
我想问的是:既然==比较引用类型时比较的是内存地址,那如上图所示结果为true是不是就意味着node和node1两者的null值放在同一内存空间?JVM给null也分配了一个可以公共访问的内存空间,就像常量池那样的区域?

川又山的主页 川又山 | 初学一级 | 园豆:192
提问于:2022-03-04 17:21

上面回答的不够准确,再补充:
null是任何引用类型的默认值,不严格的说是所有object类型的默认值。就像你创建了一个布尔类型的变量,它将false作为自己的默认值,Java中的任何引用变量都将null作为默认值;
null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型;
null可以赋值给引用变量,你不能将null赋给基本类型变量,例如int、double、float、boolean;
null特殊值

hello_blog 2年前

@hello_blog: 👍

renguanyu 2年前
< >
分享
所有回答(2)
1

node为null时,未指向任何引用,之所以返回true,是因为==方法在两者都为null时直接返回true

有容乃大 | 园豆:5 (初学一级) | 2022-03-04 18:40
1

堆栈内存
Person a = null
a 栈区有分配空间(但是一般不称呼为开辟内存,通常堆区分配内存称为开辟内存)
a 的值null可以理解为像基本类型0,具体看java内部null如何定义null值
a = new Person()
new开辟对象Person堆区内存, =号将新对象的地址值赋值给a,地址是个4字节int数值

a = null
b = null
a == b 很简单 就像a = 0,b = 0,把0替换为null一个固定值,比较值就可以

hello_blog | 园豆:202 (菜鸟二级) | 2022-03-06 23:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册