Integer int auto-boxing auto-unboxing ==
Auto-boxing 自动装箱
Auto-unboxing 自动拆箱
== 相等
1、new出来的对象,除非遇到了拆箱的情况,肯定不相等。
因为new对象之前需要在JVM堆中提供空间,所以new出来的东西之间,至少内存地址是不一样的
2、基本数据类型之间只比较值
基本数据类型的值,是常量,位于方法区的常量池(1.7之后位于堆),基本数据类型变量都是指向这些值的。
3、一个引用的类型只要是基本数据类型,就不再管赋给引用的东西是什么了,一律只比较值
包装类对象赋值给基本数据类型时都会自动拆箱
4、不一定赋值的时候,包装类对象跟基本数据类型比较的时候也会拆箱
5、自动装箱,会产生一个包装类的对象,赋给引用。这里有两种情况
第一种情况是装箱前的值 在Java设计的缓存的范围内,那么装箱后的对象是已有的缓存对象
第二种情况是装箱前的值 在Java设计的缓存的范围外,那么装箱后的对象是new出来的对象
而Integer装箱机制的缓存范围,在源码中是有详细实现的。