簡體   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