装箱和拆箱

1.装箱:值类型转换为引用类型(基本数据类型转换为包装器类型)
自动装箱:
Integer total=99;
装箱的时候自动调用的是Integer的valueOf(int)方法

2.拆箱:引用类型转换为值类型(包装器类型转换为基本数据类型)
自动拆箱:
int totalprim=total;
拆箱的时候自动调用的是Integer的intValue方法

总结:装箱的过程会创建对应的对象,这个会消耗内存,所以装箱的过程会增加内存的消耗,影响性能

总结实现过程:装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的xxxValue方法实现的(xxx代表对应的基本数据类型)

总结:Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的
Double、Float的valueOf方法的实现是类似的

在这里插入图片描述

Integer i=new Integer(xxx); 不会触发自动装箱的过程
Integer i=xxx; 会触发自动装箱的

注意:
当“==”运算符的两个操作数都是包装器类型的引用,则是比较指向的是否是同一个对象,而如果其中有一个操作数是表达式(即包含算术运算)则比较的是数值(则会触发自动拆箱的过程)。对于包装器类型,equals方法并不会进行类型转换

值类型转到引用类型…要先创建一个引用对象,才能把栈中的数据拷贝到托管堆中…
引用类型转到值类型…不销毁引用对象,直到对象生命周期结束才由GC回收…

https://www.cnblogs.com/erlongxizhu-03/p/12983442.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值