java——自动装箱拆箱

讲一下JDK 5 引入的自动装箱与拆箱

自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。

使用Integer,Double,Boolean等这些类我们可以将原始类型值转换成对应的对象,但是从某些程度可能使得代码不是那么简洁精炼。为了让代码简练,Java 1.5引入了具有在原始类型和对象类型自动转换的装箱和拆箱机制。但是自动装箱和拆箱并非完美,在使用时需要有一些注意事项,如果没有搞明白自动装箱和拆箱,可能会引起难以察觉的bug。

说到拆箱跟装箱,先要说一下八大引用类型跟基本类型

八大基本类型:

* int
* double
* float
* byte
* char
* short
* boolean 
* long

 

八大引用类型:

* * int——Integer
* * double—— Double
* * float——Float
* * byte——Byte
* * char——Character 
* * short——Short
* * boolean——Boolean
* * long——Long

 

什么是自动装箱和拆箱

自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱。反之将Integer对象转换成int类型值,这个过程叫做拆箱。

由于这个过程是并不是人为主动去转换的,所以我们将其称之为自动装箱与拆箱

何时发生自动装箱和拆箱

自动装箱和拆箱在Java中很常见,比如我们有一个方法,接受一个对象类型的参数,如果我们传递一个原始类型值,那么Java会自动讲这个原始类型值转换成与之对应的对象。最经典的一个场景就是当我们用两个数值去比较时,比如下面的这个比较

Integer integer3=100;
Integer integer4=100;
System.out.println(integer3.equals(integer4));
System.out.println(integer3==integer4);


运行结果

 






由此可见当Integer 的数值小于127时,程序为了节省空间,会自动转换成int类型,也就是自动拆箱。

要注意的事项

自动装箱和拆箱可以使代码变得简洁,但是其也存在一些问题和极端情况下的问题,以下几点需要我们加强注意。

对象相等比较

这是一个比较容易出错的地方,”==“可以用于原始值进行比较,也可以用于对象进行比较,当用于对象与对象之间比较时,比较的不是对象代表的值,而是检查两个对象是否是同一对象,这个比较过程中没有自动装箱发生。进行对象值比较不应该使用”==“,而应该使用对象对应的equals方法。看上面例子应该也能明白。

 

 

 

心得感悟

用我们的奋斗和梦想扬起青春的船帆,当我们努力拼搏地摇浆时,成功的闸门也会慢慢地再为我们打开,我们将享受一份青春的美好,收获一份成功的喜悦。

 

posted @ 2020-08-26 17:29  冬了  阅读(140)  评论(0编辑  收藏  举报