美文网首页
Java中的null究竟是什么?

Java中的null究竟是什么?

作者: imhuster | 来源:发表于2017-02-26 20:46 被阅读35次

让我们从下面的声明开始吧:

String x = null;

上面的声明到底做了什么?

回忆一下,什么是变量,什么是值?通常把变量比作一个箱子,就像你可以用箱子装一些东西那样,您可以用变量来保持一个值。当声明一个变量的时候,我们需要设置变量的类型。
Java中有两种主要的类型:基本数据类型和引用类型。变量就可以声明为基本数据类型也可以声明为引用类型。在这种情况下,初始化声明声明了一个变量"X",“X” 保存了一个字符串的引用,这里的引用是null。
下面的图片给了我们一个对这个概念更加清晰的理解。

what-exactly-is-null-in-java

如果 x="abc",它看上去应该像下面这样:

what-exactly-is-null-in-java

2.null在内存中到底是什么呢?

null在内存中到底是什么呢?或者说null值在Java中是什么呢?
首先,null不是有效的对象实例,所以不需要为它分配内存空间,它仅仅只是一个表明该引用目前没有指向任何对象的值。
JVM规范中有这么一句话:

The Java Virtual Machine specification does not mandate a concrete value encoding null.
JVM规范没有指明一个编码为null的具体值。

它表现为像C语言中的0地址那样的东西。

3.x在内存中到底是什么呢?

现在我们知道了null是什么东西了,此外,我们也知道了变量是一个保存了一些值的存储空间的地址。那么x到底在内存的哪个地方呢?
从“JVM运行时的数据存储区”示意图中我们知道,既然每一个方法在线程栈中都有一个私有的栈帧,本地变量被放在栈帧中。
引用:
1.变量,操作符号和表达式
2.变量
3.JVM规范

原文链接

相关文章

  • Java中的null究竟是什么?

    让我们从下面的声明开始吧: 上面的声明到底做了什么? 回忆一下,什么是变量,什么是值?通常把变量比作一个箱子,就像...

  • if 语句判断 null == 写在前面有没有必要?

    有一种说法是 防止少写一个=; 还有null在java中到底是什么 java中的null的剖析 - 单向街的夏天 ...

  • NULL-SpringMVC-Java

    Java Null Exception 最大的原因 ------> null 使用失误 1. Java中的Null...

  • Java中的关键字

    1、goto 与 const 是否为关键字2、 在Java中true 、false 与 null是什么3、Java...

  • Java null 总结

    问:简单谈谈你对 Java 中 null 的理解与认识? 答: null 是 java 的关键字。 null 是 ...

  • 在 Java 8 中避免 Null 检查

    在 Java 8 中避免 Null 检查 原文:Avoid Null Checks in Java 8 译者:os...

  • Java null 强制类型转换

    Java中的null值是可以强制转换为任何Java类型的,就像(Object)null是合法的,但null强转后的...

  • java中null是对象么

    java中null是对象么 一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的...

  • Java中的null

    Java中的null null设计的初衷是为了表示一些缺失的东西。 null是关键字,大小写敏感。 null是任何...

  • Java中空值或者null的判断

    Java中空值或者null的判断 Java中总是有空值或者null的情况,但是Java和js是不一样的,js中可以...

网友评论

      本文标题:Java中的null究竟是什么?

      本文链接:https://www.haomeiwen.com/subject/dhlawttx.html