作者:田景撩人_108 | 来源:互联网 | 2023-05-18 16:46
我有这个代码片段,它基本上检查整数0
ArrayList中的值long
.
import java.io.*;
import java.util.*;
class main
{
public static void main (String[] args) throws java.lang.Exception
{
long zero = 0;
ArrayList 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
.相当令人不安!这是一个错误还是预期的行为?
1> peter.petrov..:
将此逻辑检查更改为:alist.contains(0L)
.此行为与自动装箱/取消装箱有关.int
被装箱Integer
,并被long
装箱Long
.在你的列表中你放了一个long(盒装到a Long
),然后你搜索一个int(盒装到一个Integer
)......所以你找不到它.