Java语言里有8中基本数据类型,每一种类型都有与之对应的包装类。拆箱、装箱指的就是二者之间的互相转换,在Java 1.5以后编译器可以自动完成这个过程。
以int和Integer为例。
由int整数转换为Integer对象就是装箱,编译器使用valueOf()方法完成;由Integer对象转换成int整数就是拆箱,编译器使用intValue()方法完成。
*包装类一旦建立,其内容,也就是内部基本数据类型的值不可改变。
java自动拆箱装箱过程一般有两个应用场景,一个是赋值,两个发生在方法调用的时候。
需要注意的一点是,当两个对象(如Integer)进行比较时,“==”比较的是是否是同一个对象,而不仅仅内部的值,不会发生拆箱操作,所以比较两个对象不应该使用“==”,而应该重写equals()方法。但是,Java会自动缓存值在[-128,127]的Integer对象,所以在这个范围的两个对象使用“==”比较可能返回true。