Java 使用==运算符比较ArrayList中的两个元素

Java 使用==运算符比较ArrayList中的两个元素,java,arraylist,integer,compare,comparison,Java,Arraylist,Integer,Compare,Comparison,我想比较ArrayList==运算符中的两个元素,我编写以下代码: ArrayList<Integer> myArray=new ArrayList<>(); myArray.add(-128); myArray.add(-128); System.out.println(myArray.get(0)==myArray.get(1)); 结果我得到了错误的答案 我知道==运算符比较引用,而不是值,在这种情况下,两个整数有不同的引用,所以从逻辑上讲,两种情况下都必须有fa

我想比较ArrayList==运算符中的两个元素,我编写以下代码:

ArrayList<Integer> myArray=new ArrayList<>();
myArray.add(-128);
myArray.add(-128);
System.out.println(myArray.get(0)==myArray.get(1));
结果我得到了错误的答案

我知道==运算符比较引用,而不是值,在这种情况下,两个整数有不同的引用,所以从逻辑上讲,两种情况下都必须有false。 我不明白为什么只有一个从-128到127的整数为真,而另一个整数为假


注意:我在Stackoverflow和Google中看到很多问题,但我找不到问题的答案

范围-128->127中的值缓存在Integer类中。

好的,我看到:对于范围-128到127之间的值,Java将所有Integer/int引用指向同一个对象以节省内存。关于更多细节,我们真的需要更多的副本吗?请投票结束。
myArray.add(2000);
myArray.add(2000);
System.out.println(myArray.get(0)==myArray.get(1));