lif*_*nce 4 c++ java integer vector arraylist
我有这个代码片段,它基本上检查整数0ArrayList中的值long.
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");
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是contains no zero.相当令人不安!这是一个错误还是预期的行为?
将此逻辑检查更改为:alist.contains(0L).此行为与自动装箱/取消装箱有关.int被装箱Integer,并被long装箱Long.在你的列表中你放了一个long(盒装到a Long),然后你搜索一个int(盒装到一个Integer)......所以你找不到它.