素材牛VIP会员
为什么1和2比较得true,3和4比较就得false?
 骑***火  分类:Java代码  人气:1128  回帖:3  发布于6年前 收藏
    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     
 标签:java

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv5 码农
ch***am PHP开发工程师 6年前#1

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

Lv4 码徒
go***le 学生 6年前#2

看Integer源码

Lv1 新人
Al***ay 职业无 6年前#3

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

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取