繁体   English   中英

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

[英]How to check null element if it is integer array in Java?

我是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!');
            }
        }
    }

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

Integers周围物体的包装ints ,这意味着它们可以是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!');
            }
        }
    }

在原始vs引用类型上

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

参考

相关问题


On Integer vs int

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

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

参考

相关问题


关于Integer作为引用类型的结果

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

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

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

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

相关问题


必须使用Integer

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

相关问题

也可以看看


使用适当的数据结构

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

但是,在这一点上,我会认真考虑使用List<Integer> (参见Effective Java 2nd Edition:Prefer list to arrays )。 列表比数组功能更丰富,并且它与更大的Java Collections Framework良好互操作。

API参考

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

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

您可以像这样使用arr [i]!='\\ 0'。 它对我有用。

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");
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM