一个人至少拥有一个梦想,有一个理由去坚强

心若没有栖息的地方,到哪里都是在流浪

java基础系列 08 | Java中null究竟是什么?

让我们从以下声明开始:

String x = null;

1、这句话到底是做什么的?

回想一下什么是变量,什么是值。一个常见的比喻是变量类似于一个盒子。正如你可以使用盒子来存储某些东西一样,您可以使用变量来存储值。声明变量时,我们需要设置它的类型。

Java中有两种主要的类型:原始类型和引用类型。声明为基本类型的变量存储值;声明引用类型的变量存储引用。在这个例子中,初始化语句声明变量“x”。 “x”存储字符串引用。它在这里是空的。

下图可更直观地对概念有更好的理解。

《java基础系列 08 | Java中null究竟是什么?》

如果x =“abc”,它看起来像下面所示:

《java基础系列 08 | Java中null究竟是什么?》

2、内存中 NULL 到底是什么?

内存中 null 到底是什么?或 者Java 中的空值是什么?

首先,null不是有效的对象实例,因此没有为其分配内存。它只是一个值,指向当前没有指向对象的对象引用。

来自JVM规范:

Java虚拟机规范没有强制要求编码null的具体值。我认为它是类似于其他类似C语言的所有的零。

3、内存中 x  究竟是什么?

现在我们知道null是什么。我们知道变量是一个存储位置和一个包含一些值的相关符号名称(标识符)。x 到底在内存中哪里呢?

从JVM运行时数据区(后面文章会介绍)可知道,我们知道,由于每个方法在线程栈中都有一个私有栈帧,因此局部变量位于栈上。

更多精彩,请扫码关注博主个人公众号

《java基础系列 08 | Java中null究竟是什么?》

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注