Java 为什么';如果';语句在比较arraylist的两个索引时给出了错误的结果,即使它们具有相同的值
今天我发现ArrayList有点奇怪。对于以下程序:Java 为什么';如果';语句在比较arraylist的两个索引时给出了错误的结果,即使它们具有相同的值,java,arraylist,Java,Arraylist,今天我发现ArrayList有点奇怪。对于以下程序: ArrayList<Integer> al = new ArrayList<Integer>(); al.add(128); al.add(128); int t1 = al.get(0); int t2 = al.get(1); if(al.get(0)== al.get(1)) System.out.print("true"); else
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(128);
al.add(128);
int t1 = al.get(0);
int t2 = al.get(1);
if(al.get(0)== al.get(1))
System.out.print("true");
else
System.out.print("false");
if(t1== t2)
System.out.print("true");
else
System.out.print("false");
ArrayList al=new ArrayList();
加(128);
加(128);
int t1=al.get(0);
int t2=al.get(1);
如果(al.get(0)=al.get(1))
系统输出打印(“真”);
其他的
系统输出打印(“假”);
如果(t1==t2)
系统输出打印(“真”);
其他的
系统输出打印(“假”);
它给出的结果是错误的。对于小于128的值,它将给出truetrue。我不明白它背后的逻辑是什么?Java语言规范说,至少-128到127的包装器对象被缓存和重用。如果你想了解为什么128不同于较小的数字,请尝试阅读的答案。哦,忘了整数是一个对象,所以不要使用equal