猿问

为什么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     


浮云间
浏览 715回答 3
3回答

12345678_0001

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

白猪掌柜的

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

相关分类

Java
我要回答