自动拆箱/装箱
基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。
package unbox;
/**
* @author ZerototoFive
* @create 2021-09-08-20:06
*/
public class UnboxingTest {
public static void main(String[] args) {
Integer integer = 2; //自动装箱
Integer integer2 = Integer.valueOf(2);
int i = integer;//自动拆箱
int i2 = integer.intValue();
System.out.println(integer);
System.out.println(integer2);
System.out.println(i);
System.out.println(i2);
System.out.println(integer == integer2);//true
System.out.println(i == i2);//true
}
}
new Integer(2) 与 Integer.valueOf(123) 的区别在于:
new Integer(2) 每次都会新建一个对象;
Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。
Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y); // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k); // true