java基础:基本数据的自动装拆箱


1、自动装箱和拆箱的概念

自动装箱:是基本数据类型在运算的时候,自动转换成对应的包装类型。

自动拆箱:是包装数据类型在参与运算的时候,自动转换成基本数据类型参与运算。

例如:

Integer iObj = 3;//自动装箱为Integer

System.out.prinrtln(iObj + 1);自动拆箱为基本数据类型参加运算

2、装箱和拆箱的细节:涉及到基本类型的对象缓存,

a)        Integer i1 = 13;

b)        Integer i2= 13;

c)        System.out.prinrtln(i1==i2);

问:装出来的对象i1,i2是不是同一个?是。

d)       Integer i1 = 137;

e)        Integer i2= 138;

问:装出来的对象i1,i2是不是同一个?否。

f)         Integer  i3 = Integer.valueOf(3);

g)        Integer  i4 = Integer.valueOf(3);

问:装出来的对象i1,i2是不是同一个?是。

原因分析:

如果基本类型的整数要装箱成Integer对象的时候,如果在一个字节的范围内(-128~17),则缓存在一个池里面。下次如果还要封装就先到池里面看有没有,有的话直接拿来,这样节约了内存空间,因为这些小的整数使用的频率较高,反复的出现,如果出现一个就装成一个对象,没必要。

这是就引入了享元模式。

3、享元模式(flyweight)

有许多的小的对象,有许多属性相同,把他们变成同一个对象,不同的属性变成方法的参数,称为外部状态,相同的属性称为内部状态。

4、享元模式的应用:

a)   Windows中的图标:

有许多的文件夹,图标一样,只是名字不一样。这样把相同的图标搞成同一个对象,显示的时候有显示的标题和显示的位置。

b)   字母和符号的打印。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值