Null格式,允许Null值

  Null格式,允许Null值

  在第一种情况下,编译器知道您正试图取消一个编译时常量空的装箱。

  在第二种情况下,条件表达式的类型是整数,所以您实际上是在编写:

  Integer tmp=new Random().nextBoolean()?1:空;

  return(int)tmp;所以拆箱不会发生在常量表达式上,编译器会允许的。

  如果您更改它,通过取消装箱来强制条件表达式为(同Internationalorganizations)国际组织类型,它将失败:

  //编译时失败

  返回新的Random().nextBoolean()?1:(int)null;

  装箱部分隐藏了原语和相应包装对象之间的区别,但并没有消除它。

  拳击不会改变两种区别:

  对象可以为空,而基元对象不能同时具有状态和标识,而基元只有状态(值)。有时,这些差异会在使用装箱时引起问题。

  需要记住以下几点:

  小心空值。自动取消空对象的装箱将导致NullPointerException,比较==和等于的项时必须小心。

Null格式,允许Null值