[译文]在Java中究竟什么是null?_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > [译文]在Java中究竟什么是null?

[译文]在Java中究竟什么是null?

 2013/12/18 13:09:08  lwy520  程序员俱乐部  我要评论(0)
  • 摘要:我们从下面的语句开始介绍:Stringx=null;1、这句代码究竟做了一件什么事情?让我们回忆一下什么是变量,什么又是的值,一个变量类似一个盒子。正如你可以用一个框来存储的东西,你可以用一个变量来存储值。当声明一个变量,我们需要设置它的类型。java有两大类型:原始类型和引用类型。一个原始类型存储值声明的变量,一个引用类型存储引用声明的变量。在这种情况下,初始化语句声明了一个变量“x”。x表示的是String的引用,它的是为null。通过如下的图提供了有关这个概念更好的描述
  • 标签:Java 什么

我们从下面的语句开始介绍:

class="java" name="code">String x = null;  

?1、这句代码究竟做了一件什么事情?

?

让我们回忆一下什么是变量,什么又是的值,一个变量类似一个盒子。正如你可以用一个框来存储的东西,你可以用一个变量来存储值。当声明一个变量,我们需要设置它的类型。

java有两大类型:原始类型和引用类型。一个原始类型存储值声明的变量,一个引用类型存储引用声明的变量。在这种情况下,初始化语句声明了一个变量“x”。x表示的是String的引用,它的是为null。

通过如下的图提供了有关这个概念更好的描述。

what-is-null

如果 “x=abc”,它看起来像这样的

variable-reference

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

相关链接:

?

  1. What does a Java array look like in memory?
  2. Declaration, Initialization and Scoping for Java
  3. Notes from “Sun Certified Programmer for Java 6 Study Guide”
  4. String is passed by “reference” in Java

?

?

如果翻译不当,还请各位前辈多多指教。

发表评论
用户名: 匿名