为什么1和2比较得true,3和4比较就得false?

    Integer integer1 = 100;  
    Integer integer2 = 100;  
    System.out.println("integer1==integer2: " + (integer1 == integer2));// true  自动装箱的两个缓存中的 Integer对象的引用比较  
    System.out.println("integer1.equals(integer2): " + (integer1.equals(integer2)));// true  
    System.out.println("integer1.compare(integer2): " + integer1.compareTo(integer2));// 0      
    Integer integer3 = 200;  
    Integer integer4 = 200;  
    System.out.println("integer3==integer4: " + (integer3 == integer4));// false 自动装箱的两个new Integer的引用比较  
    System.out.println("integer3>integer4: " + (integer3 > integer4)); // false 将两个对象拆箱,再比较大小  
    System.out.println("integer3.equals(integer4): " + (integer3.equals(integer4)));// true  
    System.out.println("integer3.compare(integer4): " + integer3.compareTo(integer4));// 0     
阅读 4.1k
3 个回答

看Integer源码

clipboard.png

缓冲区存放了short范围的数值,在这个值范围内使用==时是相等的。Long和Short同理。

最高赞答案说的不对啊,之所以相等是因为integer缓存了-128-127这个范围的数字,==都是比较地址的。

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