知识点回顾

本文详细解释了Java中装箱(将基本数据类型转换为包装类对象)与拆箱(将包装类对象转换回基本类型)的过程,以及自动装箱时的缓存池原理,特别关注了Integer类的特殊行为和与BigDecimal的区别。
摘要由CSDN通过智能技术生成

1.装箱和拆箱机制

public static void main(String[] args) {
    //手动装箱   将基本数据类型转化为包装类
    Integer a = 5;//自动装箱  隐式装箱
    System.out.println("a =" + a);
    int b1 = 5;
    Integer b = new Integer(b1); //显示装箱
    System.out.println("b = " + b);
    System.out.println("a == b" + (a == b));//false
    System.out.println("a == b?" + (a.equals(b)));//true
    //true a是在(缓存池)常量池中获取,b是在 堆中获取/二者地址不同,但内容相同

    //手动拆箱 将包装类对象转为基本数据类型对象
    Integer t = new Integer(54);
    int t1 = t;
    int t2 = t.intValue();//显式拆箱
    System.out.println("t1 = " + t1);
    System.out.println("t2 = " + t2);
    System.out.println("t1 == t2" + (t1 == t2));//true

    //缓存池原理:自动装箱时,会自动检查缓存之中是否有该数值,若有则自动从缓存池中使用即可,
    // 但若没有则会new一个于该数值相等时的新对象(在堆中)
    //缓存池对于不同的包装类存有不同容量的数据范围,Integer类默认范围在[-128,127];
    //若比较Integer类型的128的值,二者的地址位置不同,
    Integer m = 128;
    Integer m1 = 128;
    System.out.println("m == m1" + (m == m1));//false
    //引用数据类型进行"=="运算时,比较的是二者的地址,m和m1都是new出来的对象,所以二者对象一定不同
}

2.BigDecimal

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值