java自动封装

java自动封装

在基本类型中java编程语言中一大功能叫做自动封装。但是这也避免了他们被提供的泛型集合使用, java语言提供了这些基本类型的对象版本

boolean 2Bytes  = 封装类Boolean 8bbit

int     4Bytes = 封装类 Integer 32bits

flot   4Bytes  = 封装类 Float 32bits

long    8Bytes = 封装类 Loog      64bits

提供基本类型与封装类型相同的功能,但是封装类型可以使用泛型集合.

封装类型就是替你将基本类型转化为它们的副本,这样你就不用担心你代码中的这些转化了


这个功能的免提的特性也解决了泛型中使用,但它会有一些性能处罚,这个循环中整数对象遍历的每一步,  运行环境都必须创建一个新的整数对象并在它加回到其它整数对象里面之前,创建一个新整数的对象。这就意味着,每当你进行自动封装转化时,都会产生一个新的对象配置。

测试显示基本类型只有4个字节,封装整数对象有16个字节


这里解释下 1 bytes = 8bits 。int类型4 bytes  = 32bits

封装类型  16 bytes = 128bits

 

HashMap(哈希函数) 类似的通用容器。当你使用基本类型是,比如整数型,浮点型和布尔型  NO 。HashMap必须使用对象版本。



所以HashMap无法使用简单的32bits整数型,这当然会消耗掉更多的内存。

在这里你要小心,因为任何时间,当你通过容器中获取一个基本类型时,哪里也会发生自动装箱。

 

为了节省空间,android运行环境,提供了专为hashMap的功能提供的全套的通用容器家族,但却可以使用基本类型并避免自动封装。SparseArray

SparseArray(稀疏数组)SparseArray基本上类似于一个ArrayMaps,它们都是通过使用两种紧密包装的数组,而不是一个大的一个哈希散列,从而减少了整体的内存覆盖区。但是也产生了获取的对象的花费,所以它们只有在容器中有数百个对象时才更有用,而不是成千或者上百万。

SparseArray和ArrayMaps的最主要区别是对于SparseArray可以使用基本类型,减少内存,避免了自动封装。

使用SparseArray 需要注意 你有少量的数据,数百条以内,很多的访问。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值