有关Integer.equals(Long)的问题

public class Main {  
    public static void main(String[] args) {  
           
        Integer a = 1;  
        Integer b = 2;  
        Integer c = 3;  
        Integer d = 3;  
        Integer e = 321;  
        Integer f = 321;  
        Long g = 3L;  
        Long h = 2L;  
           
        System.out.println(c==d);  
        System.out.println(e==f);  
        System.out.println(c==(a+b));  
        System.out.println(c.equals(a+b));  
        System.out.println(g==(a+b));  
        System.out.println(g.equals(a+b));  
        System.out.println(g.equals(a+h));  
    }  
}  

为什么 System.out.println(g.equals(a+b)); 结果是false,而System.out.println(g.equals(a+h));的结果是true?

阅读 3.6k
3 个回答

a+b 的 结果是 Integer 类型
a+h 的 结果是 Long 类型

另外,你使用的是封装型的对象不是基础变量。
所以不建议使用==

新手上路,请多包涵

我觉的应该是自动拆箱装箱的问题,前面的a+b是个int类型的吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题