执行结果有疑问

来源:2-5 包装类常用方法

杨清川

2021-12-30 17:46:57

相关代码:

public class Test1 {
    public static void main(String[] args) {

        Integer i11 = 333;
        Integer i22 = 333;
        System.out.println(i11 == i22);// 输出 false

        Integer i1 = 33;
        Integer i2 = 33;
        System.out.println(i1 == i2);// 输出 true
        
        Integer a = 21;
        Integer b = 21;
        System.out.println(a == b);// 输出 true

        Double i3 = 1.2;
        Double i4 = 1.2;
        System.out.println(i3 == i4);// 输出 false
    }
}

问题描述:

第一个和第二个没什么区别呀,为什么结果是不一样的;

包装类型使用==比较的应该是地址值,那为什么还有true的情况呢?

写回答

1回答

好帮手慕小明

2021-12-30

同学您好,

这里的Integer i1 =33;和 Integer i2 =33,其实隐式的调用了Integer.valueOf()方法,在缓存区是指向的同一块空间,所以结果为true,如图所示:

https://img.mukewang.com/climg/61cd888409dd649405790309.jpg

同学可以回放2-17中的视频,在7分钟出观看即可

https://class.imooc.com/lesson/2067#mid=49117

祝同学学习愉快~



0

0 学习 · 9886 问题

查看课程