Java包装类的缓存范围

        Java基本数据类型总共八种和八种包装类

        byte(整数)      ————>    Byte

        short(整数)     ————>    Short

        char(字符)     ————>     Character

        int(整数)        ————>     Integer

        long(整数)     ————>     Long

        float(小数)     ————>     Folat

        double(小数) ————>     Double

        boolean(布尔)————>    Boolean

        Byte

                我们先看Byte的缓存范围,当两个Byte对象用==进行比较的时候结果是true,因为==比较的是对象的地址值,因此说明底层比没有去创建一个新的对象,这两个Byte是同一个对象。所以Byte的缓存范围是在-128到127之间全部缓存,不会去创建一个新的对象。(注意:当你写的值超过了byte的取值范围时(-128到127)会出现java.lang.NumberFormatException: Value out of range. Value:"-129" Radix:10。设置的值超出了取值范围)

        Short

                再看Short可以看到当用==比较两个Short对象时,当我们设置的值分别是127和-128时结果是true,但当值改变成128和-129时结果是false,说明再当值是128和-129时,Byte创建了两个对象。

        我们再翻看Short源码时也发现,当值超过byte取值范围后,会去创建新的对象,没有超过不会去创建新的对象。所以Short的缓存范围是-128到127之间的数值。

         Integer

                再看Integer,和Short一样,当我们设置的值分别是127和-128时结果是true,但当值改变成128和-129时结果是false。查看Integer底层源码时也发现超过byte取值范围会去创建新对象。所以Integer的缓存范围和Short是一样的也是-128到127

        Long

                相信到这大家也能猜出来Long的缓存范围,没错也是byte的取值范围(-128到127)之间。查看他们的底层都是一致的相似。

        Float和Double

                而关于Float和Double他们两个任何得值全都是false,并且查看他们两个的地城源码时,发现总是回去创建新的对象,所以Float和Double并没有缓存范围。

 

        Boolean

                关于Boolean因为它的值只有true和false,他们的缓存是全部都缓存,不会去创建新的对象。不管是输入什么值结果都是都是true。

        

         Character

                Character比较特殊,他的缓存范围是0到127之间。超出这个范围就会新创建对象。

        总结:

        Byte(全部缓存)

        Boolean(全部缓存)

        Short(-128到127缓存)

        Integer(-128到127缓存)

        Long(-128到127缓存)

        Characte(0到127缓存)

        Float、Double(不缓存)

 

                

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值