参考文章:
深入剖析Java中的装箱和拆箱 - Matrix海子
java为每种基本数据类型提供了对应的包装器类型
使用包装器的原因:
可以将基本类型当做对象处理(带泛型的ArrayList只能传入对象),将基本类型包装成对象后,扩大了基本类型的操作。
可以将某些基本方法放在包装器中。
自动装箱:自动将基本类型转换为包装器类型
自动拆箱:自动将包装器类型转化为基本数据类型
当将一个包装器对象赋给基本类型时,会自动拆箱。
总结:装箱过程是通过调用包装器的vauleOf方法实现的,而拆箱过程是通过调用包装器的xxxVaule方法实现的
包装器类是不可变的,一旦构造了包装器,就不能更改包装在其中的值。
包装类对象的==:
包装器的==比较的是内存地址,但是介于-128和127之间的short和int被包装到固定的对象中。但是浮点类型不能被包装到固定对象,因为浮点类型时有无数个。
从这段代码可以看出,在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便
返回指向IntegerCache.cache中已经存在的对象引用,否则创建一个新的Integer对象
题目:
●谈谈Integer i=new Integer(xxx)和Integer i=xxx;这两种方式的区别:
(1)第一种不会触发自动装箱的过程,第二种会
(2)在执行效率和资源占用上的区别。第二种的执行效率和资源占用一般性情况下要优于第一种情况。
●