为什么java会抱怨
// int i;
if( i == null ){ }
而不是
// Integer i;
if( i == null ){ }
答案 0 :(得分:6)
因为Integer是一个引用类型,而int
不是 - 也就是说,因为int
不是指针,所以它不能指向任何内容。
答案 1 :(得分:2)
int(基本类型)不能为空
答案 2 :(得分:1)
因为int
是基本类型,而Integer
是它的包装类。
不同地说,int
是值类型(因此不能是null
),而Integer
是引用类型(因此可以是null
)。
在Java中,每种基本类型(例如boolean
,double
或char
)都是值类型。由于原始类型不从Object
继承,因此当需要这样的行为时,会提供一组“包装类”(Boolean
,Double
,Character
等等) (例如,将它们放在容器中,或者将它们用作通用类型参数)。
结果是原始类型确实是Java中的二等公民。
答案 3 :(得分:1)
因为int是一个值类型而且它不能为null - 它就是对象本身。另一方面,Integer是一个引用类型,可以为null或保持对对象的引用。