Integer好多人可能不会做这个题哦,我也有点疑问。。。

图片说明
图片说明
图片说明
我就奇了怪了,第一张图片中a==b 告诉我答案是false,没有引用同一个对像,然而第
二张图中的f1==f2,答案就是true了?这不也是俩个不同的对象嘛。一个f1一个f2,答案
怎么就是true了???

new 关键字是创建了一个对象,Integer就是一个对象,所以他们2个是不同的对象。结果为false。第二个图都是Integer创建的对象,所以为true。

new integer(3) 这个你是创建了一个在堆里面的对象 而不是引用常量池 用new这个关键字创建的对象在堆内存中存储

Integer是类,==比较的是地址,a是new出来的,b直接赋值,地址不一样就是错的

Integer是类,你new了一个类,得到的地址肯定不一样了。即使数值都是3,但是==比较的是地址,而不是纯数字,所以得到的结果肯定是false;
而第二组中,你没有new,所以不管是数值和地址都是一样的。得到的结果就是true

这个问题和之前有人问String s = “111” 和 String s = new String("111") 是一样的:

1、new 一定会返回一个新的对象。
2、如果直接使用某一个int 类型 ,或者是 String , 例如String s = “111”, Integer i = 100, 才会出现复用的情况。