为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2019-03-13 18:15:05
    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     
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-04-25
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

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


查看完整回答
反对 回复 2019-04-25
  • 3 回答
  • 0 关注
  • 714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信