{int == nulltype} vs. {Integer == nulltype}

时间:2011-10-02 16:51:58

标签: java comparison int

为什么java会抱怨

// int i;
if( i == null ){  }

而不是

// Integer i;
if( i == null ){  }

4 个答案:

答案 0 :(得分:6)

因为Integer是一个引用类型,而int不是 - 也就是说,因为int不是指针,所以它不能指向任何内容。

答案 1 :(得分:2)

int(基本类型)不能为空

答案 2 :(得分:1)

因为int是基本类型,而Integer是它的包装类。

不同地说,int值类型(因此不能是null),而Integer引用类型(因此可以是null)。

在Java中,每种基本类型(例如booleandoublechar)都是值类型。由于原始类型不从Object继承,因此当需要这样的行为时,会提供一组“包装类”(BooleanDoubleCharacter等等) (例如,将它们放在容器中,或者将它们用作通用类型参数)。

结果是原始类型确实是Java中的二等公民。

答案 3 :(得分:1)

因为int是一个值类型而且它不能为null - 它就是对象本身。另一方面,Integer是一个引用类型,可以为null或保持对对象的引用。