[英]Checking for zero in Java ArrayList using contains()
我有這個代碼片段,基本上檢查long
整數的ArrayList中的0
值。
import java.io.*;
import java.util.*;
class main
{
public static void main (String[] args) throws java.lang.Exception
{
long zero = 0;
ArrayList<Long> alist = new ArrayList();
alist.add (zero);
if (alist.contains(0))
System.out.println ("contains zero");
else
System.out.println ("contains no zero");
}
}
我得到的輸出contains no zero
。 相當令人不安 ! 這是一個錯誤還是預期的行為?
將此邏輯檢查更改為: alist.contains(0L)
。 此行為與自動裝箱/取消裝箱有關。 int
被裝箱為Integer
, long
被裝箱為Long
。 在你的列表中你放了一個long(盒裝到Long
),然后你搜索一個int(盒裝到一個Integer
)...所以你找不到它。
peter.petrov解釋了導致錯誤輸出的原因,我只想補充一點,盡量避免使用硬編碼,直到有必要為止。 如果您將其編碼為if (alist.contains(zero))
,則可以獲得所需的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.