让我们从下面的语句开始:
String x = null;
1. 这个语句具体的做了什么?
回一下什么是变量和什么是值。通常的比喻是变量类似于一个盒子。
就像你可以用盒子来存储东西一样,你可以用变量来存储值。
当声明一个变量的时候,我们需要设置它的类型。
Java的类型主要有两种分类:基本类型和引用。被声明为基础类型的变量保存基础类型的值,被什么保存引用的变量保存引用。
在这种情况下,初始化一个被声明为“x”的变量,“x”保存着字符串引用。 这里它是null。
下面以可视化的方式让我们更好地理解这个概念。
如果X = “abc”,它将看上去是如下的:
2. 在内存中null具体是怎么样的
Null具体在内存中是怎么样的或者声明是null值?
首先,null不是个合法的对象实例,所以没有为它分配的内存。它只是简单的一个值来指示这个对象的引用,现在没有指向一个具体的对象。
JVM标准:
JVM并没有强制一个具体为空的值。(注:
The Java Virtual Machine specification does not mandate a concrete value encoding nul)
我假设它像其他类似C的语言中,是一串类似零的东西。
3、x在内存中具体是什么?
现在我们知道null是什么了,我们知道,一个变量是一块被具体符号命名的存储区域。那x具体在内存中是什么?
根据JVM 运行的数据区域划分,我们知道,在线程中每个方法都有个私有的堆栈,本地变量被保存在这里。