【发布时间】:2011-10-02 16:51:57
【问题描述】:
为什么java会抱怨
// int i;
if( i == null ){ }
而不是关于
// Integer i;
if( i == null ){ }
【问题讨论】:
标签: java comparison int
为什么java会抱怨
// int i;
if( i == null ){ }
而不是关于
// Integer i;
if( i == null ){ }
【问题讨论】:
标签: java comparison int
因为 Integer 是引用类型,而 int 不是 - 也就是说,int 不是指针,它不能指向任何内容。
【讨论】:
int(原始类型)不能为空
【讨论】:
因为int 是一个原始类型,而Integer 是它的包装类。
换句话说,int 是一个值类型(因此不能是null),而Integer 是一个引用类型(因此可以是null)。
在 Java 中,每个基本类型(例如 boolean、double 或 char)都是值类型。由于原始类型不继承自Object,因此在需要此类行为时(例如,将它们放入在容器中,或将它们用作泛型类型参数)。
结果是原始类型在 Java 中确实是二等公民。
【讨论】:
因为 int 是一种值类型,它不能为 null - 它是对象本身。另一方面,整数是一种引用类型,可以为 null 或持有对对象的引用。
【讨论】: