Java基础之自动拆装箱

在这里插入图片描述

四、自动拆装箱

1.定义

装箱:将基本数据类型转换成包装类型的过程
拆箱:将包装类型装换成基本数据类型的过程

2.原理

自动装箱都是通过包装类的valueOf()方法来实现,自动拆箱通过包装类对象的xxxValue()来实现.

3.应用场景

场景一 、将基本数据类型放入集合类

List<Integer> li = new ArrayList<>;
for(int i=1;i<50;i++){
li.add(i);
}
反编译:
List<Integer> li = new ArrayList<>;
for(int i=1;i<50;i++){
	li.add(Integer.valueOf(i));
}	

场景二、包装类和基本类型的大小比较

Integer a=1;
System.out.println(a==1?"等于":"不等于");
boolean bool=false;
System.out.println(bool?"真":"假");
反编译:
Integer a=1;
System.out.println(a.IntValue==1?"等于":"不等于");
boolean bool=false;
System.out.println(bool.booleanValue?"真":"假");

包装类与基本数据类型进行比较运算,先将包装类拆箱成基本数据类型,然后比较.

场景三、包装类型的运算

对Integer对象进行四则运算

Integer i = 10;
Integer j = 20;
System.out.println(i+j);
反编译:
    Integer i = Integer.valueOf(10);
    Integer j = Integer.valueOf(20);
    System.out.println(i.intValue() + j.intValue());

两个包装类型之间的运算,会被自动拆箱成基本类型.

场景四、三目运算符的使用

    boolean flag = true;
    Integer i = 0;
    int j = 1;
    int k = flag ? i : j;
    
    在使用三目运算符时,会发生自动拆箱
    1.表达式1和表达式2的值只要有一个时基本数据类型
    2.表达式1和表达式2的值类型不一致,会强制拆箱升级成表示范围更大的那个类型
反编译    
boolean flag = true;
    Integer i = Integer.valueOf(0);
    int j = 1;
    int k = flag ? i.intValue() : j;
    System.out.println(k);

如果三目运算符的表达式在自动拆箱的过程中为null.会发生自动拆箱导致的空指针异常.

场景五、函数参数与返回值

//自动拆箱
public int getNum(Integer num){
return num;
}

//自动装箱
public Integer getNum(int num){
	return num;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半糖不加奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值