初露寒秋 2014-12-16 13:49
浏览 235
已采纳

java自动拆箱和装箱问题,相等判断问题

public static void main(String[] args) {
        Integer a = 1;
        Integer b = 2;
        Integer c = 3;
        Integer d = 3;
        Integer e = 321;
        Integer f = 321;
        int ee = 321;
        int ff = 321;
        Long g = 3L;
        System.out.println(c==d);
        System.out.println(e==f);
        System.out.println(ee==ff);
        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));
    }

结果:
true
false
true
true
true
true
false

 为什么会产生这样的结果呢,c、d相等,e、f不等这是为什么

  • 写回答

1条回答 默认 最新

  • weixin_42622339 2014-12-16 14:21
    关注

    去看看源码就知道了,Java会缓存-128到127的Integer实例,那些是不会产生新的instance的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?