Java_log2000_null的辨析

null作为一个非常常见的Java保留字,你真的熟悉它吗 ?_?

Java null; Java关键字; Java中null是一个对象还是一个值;

  • 我们要澄清一些误解,null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型
  • 在编译和运行时期,将null强制转换成任何引用类型都是可行的,在运行时期都不会抛出空指针异常。
  • null可以赋值给引用变量,你不能将null赋给基本类型变量,例如int、double、float、boolean。如果你那样做了,编译器将会报错

一个很经典的栗子:

//null本身不是对象,也不是Objcet的实例
//null本身虽然能代表一个不确定的对象,但就null本身来说,它不是对象,也不知道什么类型,也不是java.lang.Object的实例。

        //null是对象吗? 属于Object类型吗?
        if (null instanceof java.lang.Object) {
            System.out.println("null属于java.lang.Object类型");
        } else {
            System.out.println("null不属于java.lang.Object类型");
        }

结果会输出:null不属于java.lang.Object类型 

查阅官方文档得到:null是一个’值’,和true/false是值一样。Java一共53个保留字,这有这三个是值,其他都是关键字

Java Language Specification http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.9

While true and false might appear to be keywords, they are technically Boolean literals (§3.10.3). Similarly, while null might appear to be a keyword, it is technically the null literal (§3.10.7).

预防针:今后我会随机在自己写的博客中加入像这篇开头那样的关键字序列,用来验证我对搜索引擎网络蜘蛛的一个猜测。

小彩蛋:至于C/C++中,不要疑惑,NULL就是0


visitor tracker
访客追踪插件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值