首页 > 解决方案 > 添加到 Linkedlist 后,int 与 Integer 的比较不起作用

问题描述

public static void main(String[] args) {
     int var = 128;
     Integer i = var;
     int j = var;
     LinkedList<Integer> ll = new LinkedList<>();
     ll.add(var);
     System.out.println(i==j);
     System.out.println(i==ll.peek()); 
 }
Output:
true
false

低于数字 128 的变量 var 的值给出了正确的输出:

Output:
true
true

请解释为什么 peek() 在 127 以上的值上比较失败?

标签: javalinked-listintinteger

解决方案


执行以下操作:

System.out.println(i.equals(ll.peek()));

请记住,==比较参考,而不是内容。

在比较 Java 中的整数包装器时,检查为什么 128==128 为假但 127==127 为真?了解为什么它返回true的数字小于128.


推荐阅读