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装箱机制的缓存范围,在源码中是有详细实现的。

 

posted @ 2017-07-24 12:15  Deolin  阅读(193)  评论(0编辑  收藏  举报