如果在Java中它是整数数组,如何检查null元素?

时间:2010-06-13 19:39:22

标签: java arrays null int

我对Java很新,并且在整数数组中检查null元素时遇到问题。 我正在使用Eclipse进行编辑,并且检查null元素的行显示错误:

抱怨的行:

if(a[i] != null) {

Eclipse的错误消息:

The operator != is undefined for the argument type(s) int, null

在PHP中,这没有任何问题,但在Java中,似乎我必须将数组类型从整数更改为Object以使该行不会抱怨(如下所示)

Object[] a = new Object[3];

所以我的问题是,如果我仍然想要声明为整数数组并且仍然想要检查null, 它的语法是什么?

代码:

public void test() {
        int[] a = new int[3];
        for(int i=0; i<a.length; i++) {
            if(a[i] != null) { //this line complains...
                System.out.println('null!');
            }
        }
    }

5 个答案:

答案 0 :(得分:22)

在Java中,int是基本类型,不能是null。但是,对象存储为引用,因此如果声明对象引用但不生成new对象,则引用将为null

Integersints周围的对象包装器,意味着它们可以是null

public void test() {
        Integer[] a = new Integer[3];
        for(int i=0; i<a.length; i++) {
            if(a[i] != null) { //should now compile
                System.out.println('null!');
            }
        }
    }

答案 1 :(得分:7)

原始与参考类型

int是基本类型,与引用类型不同。只有引用类型的值为null

参考

相关问题


Integer vs int

java.lang.Integer实际上是一种引用类型,是原始类型int的指定“box”类型。因此,Integer变量的值可以为null

通过在Java中引入自动装箱,可以隐式地完成从intInteger的转换,反之亦然。但请记住,它们是非常不同的类型,实际上尝试取消装箱null会抛出NullPointerException

参考

相关问题


Integer作为参考类型的后果

已经提到了一个结果:Integer变量可以具有null值。另一个是两个==上的Integer运算符是引用标识比较,而不是数字相等。

System.out.println(new Integer(0) == new Integer(0)); // prints "false"

只要有可能,您应该更喜欢原始类型到盒装类型。以下是 Effective Java 2nd Edition,第49项:首选原始类型为盒装基元的引用(作者强调):

  

总之,只要有选择,就可以优先使用原始元素。原始类型更简单,更快捷。如果你必须使用盒装基元,小心! Autoboxing降低了使用盒装基元的详细程度,但没有降低危险性。当你的程序将两个盒装基元与==运算符进行比较时,它会进行身份比较,几乎可以肯定不是你想要的。当您的程序执行涉及盒装和未装箱原语的混合类型计算时,它会进行拆箱,而当您的程序取消装箱时,它会抛出NullPointerException 。最后,当您的程序框原始值时,它可能导致代价高昂且不必要的对象创建。

相关问题


何时必须使用Integer

有一个明显的例外,Integer必须使用int:generics。 Java泛型中的类型参数必须是引用类型。所以你不能在Java中拥有List<int>;您必须改为使用List<Integer>

相关问题

另见


使用适当的数据结构

如果您必须拥有允许int[]值的null,那么快速回答是使用Integer[]。由于您现在有一组引用类型,因此某些元素可以是null。请注意使用引用类型的所有后果,否则您可能会遇到意外情况。

但是,在这一点上,我认真考虑使用List<Integer>代替(参见 Effective Java 2nd Edition:首选列表到数组)。列表比数组功能更丰富,并且它与更大的Java集合框架可以很好地互操作。

API参考

答案 2 :(得分:3)

'int'不能为空。整数(它是一个对象)可以。所以,正如@Justin所说,Integer []将允许你测试null,但是如果int []对你有用,那么你就不需要为null测试了,因为它不会发生。

答案 3 :(得分:1)

int是java中的基本类型,不能为null。只有对象可以为null。

答案 4 :(得分:-1)

你可以使用arr [i]!=&#39; \ 0&#39;像这样。它对我有用。

public class IntNullCheck {
public static void main(String[] args) {

    int[] intarr = new int[5];
    intarr[0] = 7;
    intarr[3] = 9;

    for(int n : intarr){
        if(n != '\0'){
            System.out.println(n);
        }else
            System.out.println("Null");
    }
}
}