也是在道友的面经中看到这个问题,然后去查了一下,也自己去看了源码核实了一下,看的源码版本是jdk1.8,以此做个记录
创建长整型的包装类Long的实例时,可以是
Long a = 100L;//自动装箱
Long b = Long.valueOf(100L);//静态方法
Long c = new Long(100L);//构造器
我们用“==”来判断一下几个对象
Long a = 100L;
Long b = Long.valueOf(100L);
Long c = new Long(100L);
System.out.println(a==b);//true
System.out.println(a==c);//false
System.out.println(b==c);//false
但是如果将100L修改为128L,结果却是
Long a = 128L;
Long b = Long.valueOf(128L);
Long c = new Long(128L);
System.out.println(a==b);//false
System.out.println(a==c);//false
System.out.println(b==c);//false
这里区别在于100L的时候a、b是同一个实例,而128L的时候a、b不是同一个实例,我们去翻一下Long的源码,找到这个valueOf方法