java自动装箱与拆箱





一、java中八种基本数据类型对应的包装类型
        基本数据类型                            包装类型
        byte                                          java.lang.Byte
        short                                        java.lang.Short
        int                                            java.lang.Integer
        long                                         java.lang.Long
        float                                         java.lang.Float
        double                                     java.lang.Double
        boolean                                   java.lang.Boolean
        char                                        java.lang.Character
  

二.在java中,当基本类型与他们的父类类型运算的时候就会自动转换类型,叫做装箱与拆箱。

Integer a=10;
System.out.println(a+10);

上述代码会输出结果为:20.原因Integer为引用类型,是不能够进行加法运算的,当他与10相加时,会自动转换类型为int。这个过程我们叫做拆箱。
    上述代码第一句,我们知道Integer是一个引用类型,也就是一个类。当我们在实现一个类的时候,我们会用到这样的语法Class A = new Class()。这才是实现一个类的语法,那为什么Integer我们可以直接赋值呢,实质上当我们在运行Integer a=10这条语句时,系统自动为我们运行了Integer a = new Integer(10);这就是装箱。
    在自动装箱与拆箱中还有个小细节,看下列代码:
 Integer a= 10; 
 Integer b= 10; 
 Integer c= 345; 
 Integer d= 345; 
 System.out.println(a==b); 
 System.out.println(c==d);

输出结果为true,false.原因在于在java的自动装箱与拆箱中使用了享元模式。当数值范围为一个字节时也就是-128~127时,系统会将我们创建的对象放在缓冲区,我们称之为整形池。当下次我们再次去创建的时候,系统直接将我们创建的当前引用引用到缓冲中已有的对象,而当数值超过这个范围时,系统就不在缓冲,则会新创建一个引用


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值