装箱与拆箱以及享元模式

在Java1.5以后,JDK支持装箱和拆箱操作。

 

装箱即是我们在用基本类型的包装类定义对象的时候,可以将一个基本类型的数据赋给该对象,JDK会自动帮助我们将该数据包装成一个包装

 

类的对象。如下所示:

 

Integer integerValue_1=23;

 

这样的方式在JDK1.5以前的版本中式不支持的。

 

而拆箱则是指包装类的对象与基本类型的数据进行混合运算的时候,JDK会自动将包装类对象拆分成基本数据类型,如下面所示:

 

integerValu_1+34;

 

当执行这个操作时,JDK会自动将integerValue_1中的值23拆分出来与34进行运算。

 

 

在拆箱和装箱过程中,Java使用了一种设计模式,即是享元模式,也是说,在进行装箱时,JDK会自动保留一个缓冲区,这个缓冲区内保存

 

着已经被装箱过的对象。

 

举整形的例子,JDK会在装箱时检查赋给包装对象的基本类型的值,如果该值在-128至127之间,也是一个字节的大小,则JDK会先检查缓

 

冲区中是否已经存在了该基本类型值所对应的包装对象,有则返回该对象,没有则新建一个。而大小超过1字节的整数将每一次都重新建立一

 

个对该数据进行包装的包装对象。

 

Integer t1=13;

Integer t2=13;

 

Integer t3=222;

Integer t4=222;

 

System.out.println(t1==t2);

System.out.println(t3==t4);

 

可以看到,程序输出了true和false,==比较两个对象时,比较的是两个对象首地址是否相同,从两面的例子可以看出,t1和t2时相同的对

 

象,而t3和t4不是相同对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值