详解Java的自动装箱与拆箱(Autoboxing and unboxing)

添加链接描述(大神详解)

以下是我拜读大神的详解之后的内容摘要:

自动装箱:装箱就是自动将基本数据类型转换为包装器类型,如
Integer total = 99;
自动拆箱:拆箱就是自动将包装器类型转换为基本数据类型,如
int totalprim = total;
基本数据类型与对应的包装器类型:
在这里插入图片描述
举例:Integer a = int b
当b在[-128,128)时,会创建一个固有的new Integer()(缓存中),否则会创建一个全新的new Integer()(JVM堆中)

        int i00=127;
        Integer i01=new Integer(127);
        System.out.println(i00==i01);
        
        int i1=128;
        Integer i2 = new Integer(128);
        System.out.println(i1==i2);
        
        Integer i3 = new Integer(127);
        Integer i4 = new Integer(127);
        System.out.println(i3==i4);
        System.out.println("*****"+i3.equals(i4));
        
        Integer i5=127;
        Integer i6 =Integer.valueOf(127);
        System.out.println(i5==i6);
        
        Integer i05 = 130;
        Integer i06 = Integer.valueOf(130);
        System.out.println(i05==i06);
        System.out.println("*****"+i05.equals(i06));
        
        int i7=10000;
        Integer i8=new Integer(10000);
        System.out.println(i7==i8);
        输出:true
			  true
			  false
			  *****true
			  true
			  false
			  *****true
			  true

本例中:当一个基础数据类型与封装类进行"==加减乘除"运算时,会将封装类进行拆箱,对基础数据类型进行运算。
封装类进行 加减乘除 运算时,首先会进行自动拆箱成基本数据类型

1)对于==,比较的是值是否相等
(a)如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
(b)如果作用于引用类型的变量,则比较的是所指向的对象的地址

2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象
   如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值