说说闲话
愉快的五一假期马上结束了,有没有跟我一样最后一天假期是在加班中度过的呢?


进入正题
什么是包装类型?
java有两大数据类型体系,基本数据类型和引用数据类型。每个基本类型所对应的引用类型称为包装类型。
为什么会存在包装类型?
1、基本数据类型是无法存储null的,恰恰数据库的表中null值是普遍存在的,此时包装类型的存在就可以解决此问题。
2、包装类型除了赋值、运算、取值外还有很多其他的功能来操作基本数据类型,可以更方便程序员使用。
3、泛型中只能使用包装类型,基本数据类型是不能使用的。
4、假设现在有一个公共的方法,该方法可以打印任何数值,此时可以将该方法的入参类型设置成Object,就可以接受所有包装类型的数值。
包装类型的应用场景还是很广泛的。看完之后大家是不是跃跃欲试,想要进行尝试一下那?别急别急,包装类型也是需要慎用的。

使用包装类型进行值比较时需要注意不能使用==,需要使用equals方法。我之前写过一篇“《java基础》整型包装类之间值得比较”的文章,就不在这进行解释了。如果大家想了解的话可以翻看一下之前写的文章。本篇文章主要介绍的是使用包装类型需要注意效率相关的问题。
下面通过一段代码来了解一下当包装类型使用不当时造成程序效率下降的问题。
public static void main(String[] args) {
// 获取开始时间
long packingTypeStartTime = System.currentTimeMillis();
Integer packingTypeSum = 0;
for (int i = 0; i < 100000; i++) {
packingTypeSum += i;
}
System.out.println("总和为:" + packingTypeSum);
// 获取结束时间
long packingTypeEndTime = System.currentTimeMillis();
System.out.println("使用包装类型求和耗时:"
+ (packingTypeEndTime - packingTypeStartTime) + "毫秒。");
System.out.println("========我是分割线========");
// 获取开始时间
long basicTypeStartTime = System.currentTimeMillis();
int basicTypeSum = 0;
for (int i = 0; i < 100000; i++) {
basicTypeSum += i;
}
System.out.println("总和为:" + basicTypeSum);
// 获取结束时间
long basicTypeEndTime = System.currentTimeMillis();
System.out.println("使用基本数据类型求和耗时:"
+ (basicTypeEndTime - basicTypeStartTime) + "毫秒。");
}
大家知道哪个执行时间更短吗?执行结果见下图:


包装类型的使用应遵循以下原则:
1、所有的 POJO 类属性必须使用包装数据类型。
2、RPC(远程过程调用) 方法的返回值和参数必须使用包装数据类型。普通方法根据实际需求确定。
3、局部变量尽量使用基本数据类型,有效避免因频繁拆装箱导致的性能下载。
4、进行反射方法调用时,必须使用包装类型。
今天的分享就到这了,如果喜欢的话大家记得点赞哦!