2015070205 - EffactiveJava笔记 - 第49条 基本类型优于装箱类型(4)
2015-07-02 23:15
274 查看
基本数据类型比装箱类型更加节省时间和空间.
<script src="https://code.csdn.net/snippets/730287.js"></script>
程序执行起来比预计慢一些,因为把局部变量sum设置为包装类型Long,而并不是基本数据类型long,变量被反复地装箱拆箱,导致性能明显下降.
上面3个案例中,问题是一样的,那就是程序员忽略了基本类型和装箱类型的差异.
那么什么时候使用装箱类型呢?
1.作为集合中的元素,键和值.你不能将基本数据类型放在集合中,必须使用装箱类型.
2.在泛型中,必须使用装箱类型作为类型参数,因为不允许使用基本数据类型.比如你不能将ThreadLocal<int>类型,必须使用Integer
3.反射时方法调用,必须使用装箱类型.
当可以选择的时候,基本类型优于装箱类型,基本类型简洁,快速.
如果必须使用装箱类型,请小心,自动装箱减少使用装箱类型的繁琐,但是并没有减少风险.
当程序使用==操作符比较装箱类型时,它做同一性比较,这不是我们想要的;当程序涉及装箱和拆箱混合类型计算,它会进行拆箱.有可能会抛出空指针异常;程序装箱的时候,导致高开销和不必要的对象创建.
<script src="https://code.csdn.net/snippets/730287.js"></script>
程序执行起来比预计慢一些,因为把局部变量sum设置为包装类型Long,而并不是基本数据类型long,变量被反复地装箱拆箱,导致性能明显下降.
上面3个案例中,问题是一样的,那就是程序员忽略了基本类型和装箱类型的差异.
那么什么时候使用装箱类型呢?
1.作为集合中的元素,键和值.你不能将基本数据类型放在集合中,必须使用装箱类型.
2.在泛型中,必须使用装箱类型作为类型参数,因为不允许使用基本数据类型.比如你不能将ThreadLocal<int>类型,必须使用Integer
3.反射时方法调用,必须使用装箱类型.
当可以选择的时候,基本类型优于装箱类型,基本类型简洁,快速.
如果必须使用装箱类型,请小心,自动装箱减少使用装箱类型的繁琐,但是并没有减少风险.
当程序使用==操作符比较装箱类型时,它做同一性比较,这不是我们想要的;当程序涉及装箱和拆箱混合类型计算,它会进行拆箱.有可能会抛出空指针异常;程序装箱的时候,导致高开销和不必要的对象创建.
相关文章推荐
- 2015第27周三Java内存模型
- Eclipse for Mac 常用快捷
- java求两个数的最大公约数和最小公倍数
- Spring整合Hibernate问题
- 《Java课程实习》日志(周四)
- 用线程和借口分别实现的Java秒表
- JAVA学习之面向对象编程
- java时间处理工具类--DateUtils
- Java程序设计第十七周之猜猜看
- java时间处理工具类--DateUtils
- 图说——JavaIO
- JAVAOO学习第三天(15-7-2)
- Java课程设计实训第四天——实现猜猜看游戏的达成
- java源码分析之ArrayList
- 2015070204 - EffactiveJava笔记 - 第49条 基本类型优于装箱类型(3)
- Genymotion中SD卡目录在Eclipse中查看,以及创建SDCard
- eclipse配置maven
- JAVAOO第二天(15-7-1)
- Solr之spring集成
- Django项目导入Eclipse运行调试