实例说明Java中的null-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

实例说明Java中的null

简介:
让我们先来看下面的语句:
  String x = null;
  1. 这个语句到底做了些什么?
  让我们回顾一下什么是变量,什么是变量值。一个常见的比喻是 变量相当于一个盒子。如同可以使用盒子来储存物品一样,您可以使用一个变量来存储一个值。当声明一个变量时,我们需要设置其类型。
  在Java中变量分为两大类型: 原始值(primitive)与引用值(reference).
  声明为原始类型的变量,存储的是实际的值;声明为引用类型的变量,存储的是实际对象的地址(指针,引用).
  在上面的语句中, 初始化语句定义了一个变量 "x". x中存放的是String引用,此处为 null.
  下图对此概念提供了更形象的说明:
  
  如果 x = "abc",则引用示意图如下:
  
  2. 在内存中null具体是什么?
  在Java中 null 值是什么,在内存中null是什么?
  首先需要明确,null不是一个合法的object实例,所以并没有为其分配内存.
  null 仅仅用于表明该引用目前没有指向任何对象。
  我们看看 JVM规范 的描述:
  Java虚拟机规范并不强制要求使用一个具体的值编码null。
  我认为和其它类C语言一样,null是对引用变量的值全部置0。
  译者注: Java对象的属性域默认初始化其实很简单,把分配的内存所有位全部置0,所以 数字是0, boolean是false, 浮点是 0.0f, 引用是 null, 因为引用是内存地址,所以可以推测出 null 实际上就是一堆0. 用鼠标手想一想也就明白, 地址 0 肯定是不可以存放任何对象的。

最新内容请见作者的GitHub页:http://qaseven.github.io/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章