Java之包装类

Java中有8种基本数据类型,而这8种基本数据类型又各自对应着一种包装类。包装类的引入主要是 为了解决使用泛型时发生的一些问题。
在这里插入图片描述
包装类的使用:
1.装箱(装包):将基本数据类型变为对应的包装类
2.拆箱(拆包):将包装类变为对应的基本数据类型
自动拆箱和自动装箱是工作在编译期间的一种机制,java提供的自动机制

        int i = 10;
        Integer n = i; //自动装箱  int-->Integer
        Integer m = (Integer)i; //自动装箱
        int o = n; //自动拆箱    Integer-->int
        int p = (int) n; //自动拆箱

两个变量自动装箱后,是否相等(==)?
eg:

        Integer a = 10;
        Integer b = 10;
        System.out.println(a == b);//true
        Integer a1 = -10;
        Integer b1 = -10;
        System.out.println(a1 == b1);//true
        Integer a2 = 128;
        Integer b2 = 128;
        System.out.println(a2 == b2);//false
        Integer a3 = -129;
        Integer b3 = -129;
        System.out.println(a3 == b3);//false

从上述可看出,两个变量的值不同,它们可能会“==”,也可能不会;
通过查看源码可以了解到:对于Integer而言,在内存当中已经有[-128, 127]这固定的256个数值了,所以每次创建的数字在这个区间,都会直接返回一个该对象的引用,若创建的数字不在这个区间,则会另外新创建一个对象来存储该数字,固然,所返回的引用也是不相同的。
同理对于Byte、Short、Character、Long而言也是一样的,在固定的区间内,所创建对象的引用都是相同的;而对于Double、Float而言,则不同,因为在一个固定的区间里,浮点数的个数是无限的,所以每次创建出的对象的引用都是不相同的。Integer、Short、Long创建对象引用相同的范围是相同的。
装箱的操作会创建对象,频繁的装箱操作会消耗大量的内存,所以应尽量避免使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值