Java中的null到底是什么?

    我们从下面这段声明开始:

String x = null;

1. 这段声明完成了哪些工作?

    我们来回顾一下,什么是变量,什么是变量的值。一种比较常见的理解是,变量就像是盒子一样,可以用来存储东西,你可以使用一个变量来存储一个值。每当声明一个变量时,我们需要指定它的类型。

    在Java中有两种主要的变量类型:基本型(primitive)和引用型(reference)。基本型的变量用来存储值,引用型的变量则存储引用。在上面的例子中,初始化声明定义了一个变量“x”。“x”存储了一个字符串(String)引用,它不是空的(null)。

    下图能让你更好地理解这一概念。


如果令x="abc",则:


2. null在内存中到底是什么样的?

    null在内存中到底是什么样的呢?或者,Java中null值是什么?

    首先,null不是一个有效地对象实例,因此,不会为它分配内存空间。它只是用来表示对象引用还没有真正指向一个对象。

   来自 JVM说明

The Java Virtual Machine specification does not mandate a concrete value encoding null.    Java虚拟机并没有为null编码指明一个具体的值。
    我把它看做类似于C语言中的零一样。

3. x在内存中到底是什么样的?

    现在,我们已经知道什么是null,同时我们也知道,一个变量就是一个存储地址和一个与之对应的包含值的符号明名称(标识符)。但x究竟在内存中的什么位置呢?

    从图-JVM运行时的数据区域,我们知道每个方法在线程中都有一个私有(private)的栈区,局部变量就放在这个栈区中。

原文地址:What exactly is null in Java?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值