1.9.Null在Java中精确表示

让我们从下面的语句开始:
String x = null;

这个语句具体的做了什么?

回一下什么是变量和什么是值。通常的比喻是变量类似于一个盒子。
就像你可以用盒子来存储东西一样,你可以用变量来存储值。

当声明一个变量的时候,我们需要设置它的类型。
Java的类型主要有两种分类:基本类型和引用。被声明为基础类型的变量保存基础类型的值,被申明为用的变量保存引用。
在这种情况下,初始化一个被声明为“x”的变量,“x”保存着字符串引用。 这里它是null。
下面以可视化的方式让我们更好地理解这个概念:

String Null

如果X = “abc”,它将看上去是如下的:

String abc

在内存中null具体是怎么样的

null具体在内存中是怎么样的或者什么是null值?
首先,null不是个合法的对象实例,所以没有为它分配的内存。它只是简单的一个值来指示这个对象的引用,现在没有指向一个具体的对象。
JVM标准:
JVM并没有强制一个具体为空的值。
(注:The Java Virtual Machine specification does not mandate a concrete value encoding nul)
我假设它像其他类似C的语言中,是一串类似零的东西。

x在内存中具体是什么?

现在我们知道null是什么了,我们知道,一个变量是一块被具体符号命名的存储区域。那x具体在内存中是什么?
根据JVM 运行的数据区域划分,我们知道,在线程中每个方法都有个私有的堆栈,本地变量被保存在这里。

JVM 内存划分

译者注: 有点奇怪,这里面好像没翻译对,回头查查。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,393评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,757评论 0 11
  • 2017.7.9 晨起感恩 我十分感恩大恩上师及诸佛菩萨的护佑和加持,感恩上师慈悲教诲,谢谢,谢谢,谢谢 我十...
    鹊曾阅读 194评论 0 1