在Java中究竟什么是null?
2013-12-18 00:10
330 查看
我们从下面的语句开始介绍:
1、这句代码究竟做了一件什么事情?
让我们回忆一下什么是变量,什么又是的值,一个变量类似一个盒子。正如你可以用一个框来存储的东西,你可以用一个变量来存储值。当声明一个变量,我们需要设置它的类型。
java有两大类型:原始类型和引用类型。一个原始类型存储值声明的变量,一个引用类型存储引用声明的变量。在这种情况下,初始化语句声明了一个变量“x”。x表示的是String的引用,它的是为null。
通过如下的图提供了有关这个概念更好的描述。
![](http://www.programcreek.com/wp-content/uploads/2013/12/what-is-null-150x150.png)
如果 “x=abc”,它看起来像这样的
![](http://www.programcreek.com/wp-content/uploads/2013/12/variable-reference-300x144.png)
2、NULL在内存中究竟是什么?
NULL在内存中究竟是什么?又或者在Java中null指的又是什么呢?
首先,null不是一个有效的对象实例,所以没有为它分配内存。它只是一个值,该值指示对象没有具体的引用。
在jvm规范中是这样描述null的:
The Java Virtual Machine specification does not mandate a concrete value encoding null.『Java虚拟机规范并不要求一个具体的值编码为null。』
可以假设它是类似像在C语言的ITIS.(此处需要说的是,本人对C不了解,这里就不方便细说)
3、究竟X在内存又是什么?
现在我知道null是什么,我们知道一个变量是一个存储位置和相关的符号名(标识符),其中包含值。那么x究竟在内存中的什么位置呢?
通过阅读JVM 运行时数据区我们知道,既然每个方法都在线程的栈空间中有一个私有的栈帧,那么局部变量就存放在栈帧里面.
参考文献:
1. Variables,
Operators, and Expressions
2. Variable
3. JVM
Specifications
相关链接:
What
does a Java array look like in memory?
Declaration,
Initialization and Scoping for Java
Notes
from “Sun Certified Programmer for Java 6 Study Guide”
String
is passed by “reference” in Java
如果翻译不当,还请各位前辈多多指教。
String x = null;
1、这句代码究竟做了一件什么事情?
让我们回忆一下什么是变量,什么又是的值,一个变量类似一个盒子。正如你可以用一个框来存储的东西,你可以用一个变量来存储值。当声明一个变量,我们需要设置它的类型。
java有两大类型:原始类型和引用类型。一个原始类型存储值声明的变量,一个引用类型存储引用声明的变量。在这种情况下,初始化语句声明了一个变量“x”。x表示的是String的引用,它的是为null。
通过如下的图提供了有关这个概念更好的描述。
![](http://www.programcreek.com/wp-content/uploads/2013/12/what-is-null-150x150.png)
如果 “x=abc”,它看起来像这样的
![](http://www.programcreek.com/wp-content/uploads/2013/12/variable-reference-300x144.png)
2、NULL在内存中究竟是什么?
NULL在内存中究竟是什么?又或者在Java中null指的又是什么呢?
首先,null不是一个有效的对象实例,所以没有为它分配内存。它只是一个值,该值指示对象没有具体的引用。
在jvm规范中是这样描述null的:
The Java Virtual Machine specification does not mandate a concrete value encoding null.『Java虚拟机规范并不要求一个具体的值编码为null。』
可以假设它是类似像在C语言的ITIS.(此处需要说的是,本人对C不了解,这里就不方便细说)
3、究竟X在内存又是什么?
现在我知道null是什么,我们知道一个变量是一个存储位置和相关的符号名(标识符),其中包含值。那么x究竟在内存中的什么位置呢?
通过阅读JVM 运行时数据区我们知道,既然每个方法都在线程的栈空间中有一个私有的栈帧,那么局部变量就存放在栈帧里面.
参考文献:
1. Variables,
Operators, and Expressions
2. Variable
3. JVM
Specifications
相关链接:
What
does a Java array look like in memory?
Declaration,
Initialization and Scoping for Java
Notes
from “Sun Certified Programmer for Java 6 Study Guide”
String
is passed by “reference” in Java
如果翻译不当,还请各位前辈多多指教。
相关文章推荐
- Java中究竟什么是null?
- Java中的null究竟是什么?
- java和JavaScript究竟什么关系,有什么样的区别
- eclipse中编译java程序,究竟跟命令行中编译java程序究竟有什么区别
- 浅谈java中null是什么,以及使用中要注意的事项
- oracle 10g 在win7下安装,登陆em,提示一个java的什么null的错误
- java synchronized究竟锁住的是什么
- java中的mvc和三层结构究竟是什么关系
- 为什么 java wait/notify 必须与 synchronized 一起使用,jvm究竟做了些什么
- 【Java面试题】3 Java的"=="和equals方法究竟有什么区别?简单解释,很清楚
- 有关Java的调查:读者需要的究竟是什么?
- java方法区究竟存储了什么?
- Java中的mvc和三层结构究竟是什么关系
- 在java中null与""有什么区别----所有的语言都是这样子
- java中,return和return null有什么区别吗?
- 从源码角度分析java 的 sleep()和wait()究竟有什么区别?
- java中的mvc三层结构究竟有什么关系
- 当几个引用指向同一个java对象的时候,用什么办法能让这几个引用都变成 null?
- Java基础——"=="和equals方法究竟有什么区别?
- java中"=="和equals方法究竟有什么区别?