让我们从下面的语句开始:

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 运行的数据区域划分,我们知道,在线程中每个方法都有个私有的堆栈,本地变量被保存在这里。

九、Null在Java中的精确表示的更多相关文章

  1. JAVA笔记整理(九),JAVA中的集合

    在工作中,我们经常需要将多个对象集中存放,可以使用数组,但是数组的长度一旦固定之后是不可变的,为了保存数量确定的数据,我们可以使用JAVA中的集合. 在我看来,JAVA中的集合可以看作是一个特殊的数据 ...

  2. 面试题((A)null).fun()——java中null值的强转

    面试题分享 public class A {public static void fun1() { System.out.println("fun1"); } public voi ...

  3. Java中更精确的计时

    我们一般的java运输计时代码是 long begintime = System.currentTimeMillis(); //运算代码 long endtinme=System.currentTim ...

  4. Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...

  5. 关于Java中null的十点详解

    对于每一个Java程序员来说,null肯定是一个让人头痛的东西,连Java的发明者都承认这是一项巨大的设计失误,今天就来总结一下Java中关于null的知识. 1.null不属于任何类型,可以被转换成 ...

  6. 转!!Java中关于Null的9个解释(Java Null详解)

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  7. 关于Java中的Null

    什么是Java中的Null? null在Java中是一个非常重要的概念,它最初是为了表示缺少某些东西,例如缺少用户.资源或任何东西而发明出来的.但是这也为Java程序员带来了很多麻烦,比如最常见的空指 ...

  8. Java中的Null是什么?

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  9. Java中有关Null的9件事(转)

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

随机推荐

  1. 如何固定OpenERP顶的主菜单,方便滚动至第二屏以及多屏时,快速切换主菜单

    如何固定OpenERP顶的主菜单,方便滚动至第二屏以及多屏时,快速切换主菜单 作者:广州-步科,来自OpenERP应用群() 将“addons\web\static\src\css”目录下的“base ...

  2. adb shell settings 控制安卓系统设置(转)

    Android4.2的源码android-17\com\android\commands目录下较之前的版本多了一个settings命令,查看其中的SettingsCmd.java文件,末尾有命令的帮助 ...

  3. Cannot load supported formats: Cannot run program "svn"

      Cannot load supported formats: Cannot run program "svn" CreateTime--2018年4月26日11:32:37 A ...

  4. spring mvc自定义数据转换

    @InitBinder   在controller中注册一个customer protperty editor以解析request中的参数并通过date bind机制与handler method中的 ...

  5. Mysql 监视工具

    对于开发人员来说,最头大的莫过于 ,你本地没事,线上 错误日志一堆. 尤其是数据库通信那一层.SqlServer 有 sql profile 用来监视对应的server上的通信日志,参数 命令等信息. ...

  6. npm换国内淘宝镜像

    来源于:http://yijiebuyi.com/blog/b12eac891cdc5f0dff127ae18dc386d4.html 为什么要换源? npm 官方站点 http://www.npmj ...

  7. JavaScript中的闭包(closure)

    闭包的特性 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收  闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露,主要用于私有的方法和变 ...

  8. 在oracle数据库表中没有添加rowid字段为什么会出现?

    rowid 是 oracle 数据库表中的伪列, rowid 首先是一种数据类型,它唯一标识一条记录物理位置, 基于64位编码的18个字符显示.因为 rowid 是伪列, 所以并未真的存储在表中,但可 ...

  9. nyoj------擅长排列的小明

    擅长排列的小明 时间限制:1000 ms  |           内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序 ...

  10. CentOS 安装 Hadoop

    原文地址:http://www.cnblogs.com/caca/p/centos_hadoop_install.html 下载和安装   download hadoop from http://ha ...