复习Java基础知识-自动拆装箱

包装类

char      ---        character

int         ---        Integer

其他基本类型的包装类均为基本类型首字母大写

为啥要使用包装类

因为有的地方需要基本类型有对象的一些特征属性,所以使用包装类来让基本类型具有对象特征。

自动拆箱和自动装箱

自动拆箱 包装类 -> 基本类型

Integer a = 123;
int b = a;

int b = a 的本质是 int b = a.intValue();

包装类拆箱统一是使用 基本类型Value()方法来拆箱

自动装箱 基本类型 -> 包装类

上文中 Integer a = 123就是自动装箱

本质是 Integer a = Integer.valueOf(123);

包装类.valueOf()方法来实现自动装箱。

什么场景会使用到自动拆装箱

1. 将基本类型放入集合类中

2. 包装类型和基本类型比较大小

3. 包装类的计算

4. 三则运算符的使用 如果 i 为null 这里就会报错

boolean flag = true;
Integer i = 0;
Integer j = 1;
int k = flag ? i : j;
//int k = flag ? i.intValue() : j.intValue();

5. 函数参数和返回值

自动装箱与缓存

Integer 的 128现象

Integer.valueOf()中使用了IntegerCache方法缓存了一个-128 到 127的Integer数组,valueOf会判断大小是否在这个缓存数组中,如果有就直接将引用指向数组中地址,没有就new一个新的Integer对象。所以

public class Integer缓存的测试 {
    public static void main(String[] args) {
        Integer a = 127;
        Integer b = 127;
        System.out.println(a == b);
        a= -128;
        b= -128;
        System.out.println(a == b);

        a=200;
        b=200;
        System.out.println(a == b);
    }
}

这个代码输出就是

true

true

false

同样,如果你使用new Integer()来创建对象,也不会通过缓存池引用所以和直接自动装箱的对象用 == 比较也会返回false。

基本类型和包装类的选择

1. 类的属性和方法的返回值推荐使用包装类,因为包装类的默认值为null比较符合业务环境

2. 局部变量推荐使用基本类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值