自动装箱与拆箱

自动装箱与拆箱

两行代码简洁明了

 //自动装箱
 Integer total = 99;
 
 //自动拆箱
 int totalprim = total;

装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
在这里插入图片描述
在java中每一个基本数据类型都有一个与之相应的引用数据类型,基本数据类型一般用于算术运算,
布尔类型的判断,关系运算等.但是无法进行对象的操作(方法调用,属性调用等),但是通过基本数据
类型的封装类型可以对基本数据类型对象进行操作,比如进行字符串与基本数据类型之间的转换等;

注意:
其中int对应的是Integer,char对应的是Character,其余的六个都是首字母进行了转换
基本数据类型对象包装类的特点是:用于基本数据类型和字符串之间的相互转换

parseXXX(String s);
其中XXX表示基本数据类型,参数为可以转换成基本数据类型数据的字符串,如果字符串无法完成正常的转换
程序将会出现一个:NumberFormatException

将基本数据类型转化成字符串有几种方式:
1、基本数据类型和""相连接即可;比如:34 + “”
2、调用String的valueOf方法;String.valueOf(65);
3、调用封装类型中的toString方法;Integer.toString(35);

基本数据类型和对象之间进行相互转换
使用int类型与Integer对象进行转换,其他的基本数据类型与对象的转换基本一致

基本数值 int -----> 封装类型 Integer

自动装箱和拆箱
在需要的情况下,基本数据类型与封装类型通用。有些时候我们必须使用封装类型的时候,就可以将
基本数据类型转换成封装类型

比如:
基本类型可以使用运算符进行直接计算,但是引用类型不可以.而封装类型作为引用数据类型的一种
可以进行计算。原因在于java"偷偷的"自动的进行了对象向基本数据类型的转换
相对应的,引用数据类型变量必须是new出来的内存空间地址,而我们如果想要将一个基本数据类型
赋值给一个封装类型的时候,java也在"偷偷的"进行转换
Integer iiiii = 100; 底层自动进行了转换,就相当于Integer iiiii = Integer.valueOf(100);

底层有一个IntegerCache缓存数组,存储的值的范围是 -128 ~ 127之间如果在这个范围之内,能后自动进行转换
存储的是同一个元素,地址相同
如果超过了这个范围,底层会自动new Integer对象,两个对象的值相同,但是地址不同

自动装箱:基本数值转换成对象 int —valueOf方法-----> Integer
自动拆箱:封装类型 Integer ----intValue方法-----> int

    int a = 10;
    int b = 10;
    Integer x = 10;
    Integer y = 10;
    Integer m = new Integer(10);
    Integer n = new Integer(10);
    System.out.println(a == b);//true 基本数据类型比较的是值

    System.out.println(x == a);//true 底层自动拆箱 (x.intValue()转换成基本数据类型)

    System.out.println(x == y);//true

    System.out.println(m == n);//false 比较两个对象的地址

    System.out.println(x == n);//false

    System.out.println(a == n);//true

    boolean flag = m.equals(x);//比较的值
    System.out.println(flag);//true

情况1:
int a = 值;
int b = 值;
a == b 比较值
情况2:
Integer x = 值;
Integer y = 值;
(1)值在[-128 ~ 127]之间返回true
(2)不在这个区间内,返回false
情况3:
Integer m = new Integer(值);
Integer n = new Integer(值);
m == n 比较的是地址,返回false
情况4:
Integer x = 值;
Integer m = new Integer(值);
x == m 比较地址,返回false
情况5:
int a = 值;
Integer x = 值;
a == x 其实等价于 a = x.intValue() 进行拆箱 true 比较基本数据类型
情况6:
int a = 值;
Integer m = new Integer(值);
a == m
a == m 进行拆箱,比较基本数据类型的值
情况7:
调用Integer类中的equals方法,比较的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值