基本类型的对象表示, 包装器.

    • 包装器是不可变的, 不能改变其中的值
    • 包装器类是 final 的

    自动装箱:

    1. var list = new ArrayList<Integer>();
    2. list.add(3); // 自动变成 list.add(Integer.valueOf(3));

    自动拆箱:

    1. int n = list.get(i);
    2. // 自动变成
    3. int n = list.get(i).intValue();

    适用于算数表达式:

    1. Integer n = 3;
    2. n++;

    比较两个包装器对象使用 equals 方法.

    image.png

    如果在一个条件表达式中混合使用 Integer 和 Double, Integer 值会拆箱并转为 double, 之后再装箱为 Double:

    1. Integer n = 1;
    2. Double x = 2.0;
    3. System.out.println(true ? n : x); // prints 1.0

    装箱, 拆箱由编译器拆完成.