首页 > Java, 挨踢(IT) > 简易Java(13):Java中的null到底为何方神圣?

简易Java(13):Java中的null到底为何方神圣?

2014年11月3日 发表评论 阅读评论 210 人阅读    

让我们从下面这行代码开始:

String x = null;

上面这句话到底做了什么?

在回答这个问题之前,我们需要先回顾一下什么是变量以及什么是变量值?一个常见的比喻是变量就类似一个箱子。就像你可以使用箱子盛放东西一样,你能用变量存放变量值。当你声明一个变量时,你就需要设置它的类型。

Java中主要分为两种数据类型:基本类型和引用类型。声明为基本类型的变量存储变量值;声明为引用类型的变量存储引用。在上面那行代码里,初始化语句声明了一个变量xx存储一个字符串的引用。此时这里就是null

String的引用

在内存中,null究竟是什么?

在内存中,null是什么呢?或者说,在Java中,null值是什么?

首先,null不是一个可以合法的对象实例,所以并没有为它分配内存。它只是一个简单的值,这个值表示对象引用现在并没有引用一个对象实例。

在Java虚拟机规范中,有如下描述:

Java虚拟机规范没有指定一个确定的值来编码null

我可以假定它就是事务的一串0值,就行是在C语言那样。

在内存中,x究竟是什么?

现在,我们知道null是什么。并且,我们知道变量就是存储位置,就是一个包含值的符号名称(标志符)。那么,x究竟在内存中的什么位置?

从Java虚拟机运行时数据区的图片上,我们可以知道,每个方法在线程内都有一个私有栈桢,本地变量就位于栈桢里。

《Simple Java》是一本讲解Java面试题的书。讲解也有不少独特之处,为了面试,《简易Java》走起!



作 者: D瓜哥,http://www.diguage.com/
原文链接:http://www.diguage.com/archives/119.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。



如果感觉这篇文章不错,请点击这里的分享按钮,分享到微博等地方去,让更多人受益!
您的支持是D瓜哥最大的写作动力!谢谢!

分类: Java, 挨踢(IT) 标签: ,

无觅相关文章插件,快速提升流量