【问题标题】:{ int == nulltype } vs. { Integer == nulltype }{ int == nulltype } 与 { Integer == nulltype }
【发布时间】:2011-10-02 16:51:57
【问题描述】:

为什么java会抱怨

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

而不是关于

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

【问题讨论】:

    标签: java comparison int


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      int(原始类型)不能为空

      【讨论】:

        【解决方案3】:

        因为int 是一个原始类型,而Integer 是它的包装类。

        换句话说,int 是一个值类型(因此不能是null),而Integer 是一个引用类型(因此可以是null)。

        在 Java 中,每个基本类型(例如 booleandoublechar)都是值类型。由于原始类型不继承自Object,因此在需要此类行为时(例如,将它们放入在容器中,或将它们用作泛型类型参数)。

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

        【讨论】:

          【解决方案4】:

          因为 int 是一种值类型,它不能为 null - 它是对象本身。另一方面,整数是一种引用类型,可以为 null 或持有对对象的引用。

          【讨论】:

            猜你喜欢
            • 2014-07-01
            • 2010-10-10
            • 1970-01-01
            • 2021-09-09
            • 1970-01-01
            • 2018-05-11
            • 2020-11-05
            • 1970-01-01
            • 2021-10-14
            相关资源
            最近更新 更多