Null格式,允许Null值
在第一种情况下,编译器知道您正试图取消一个编译时常量空的装箱。
在第二种情况下,条件表达式的类型是整数,所以您实际上是在编写:
Integer tmp=new Random().nextBoolean()?1:空;
return(int)tmp;所以拆箱不会发生在常量表达式上,编译器会允许的。
如果您更改它,通过取消装箱来强制条件表达式为(同Internationalorganizations)国际组织类型,它将失败:
//编译时失败
返回新的Random().nextBoolean()?1:(int)null;
装箱部分隐藏了原语和相应包装对象之间的区别,但并没有消除它。
拳击不会改变两种区别:
对象可以为空,而基元对象不能同时具有状态和标识,而基元只有状态(值)。有时,这些差异会在使用装箱时引起问题。
需要记住以下几点:
小心空值。自动取消空对象的装箱将导致NullPointerException,比较==和等于的项时必须小心。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。