Integer integer1=new Integer(100);
Integer integer2=new Integer(100);
System.out.println(integer1==integer2);
Integer integer3=100;//实际是Integer。Valueof(1000)
Integer integer4=100;//实际是Integer。Valueof(1000)
System.out.println(integer3==integer4);
Integer integer5=1000;//实际是Integer。Valueof(1000)
Integer integer6=1000;//实际是Integer。Valueof(1000)
System.out.println(integer5==integer6);
结果
false
true
false
1.new在堆中开辟空间 1与2的地址不同
2.100 自动装箱在Integer的缓冲区中,直接返回缓冲区对象,地址相同,为true
3.1000已经超出缓冲区了
包装类提供了对象的缓存,具体的实现方式为在类中预先创建频繁使用的包装类对象,当需要使用某个包装类的对象时,如果该对象封装的值在缓存的范围内,就返回缓存的对象,否则创建新的对象并返回。
原文链接
具体实例
Integer = 5;//会自动装箱 Integer.valueof()会使用缓存
== 比较时会自动拆箱
equals 金基金比较直,不会拆箱
+等 算数运算会先拆箱再装箱