🧑💻作者名称:DaenCode
🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:Java基础夯实

链接>>>>>>>>>《Redis从头学》链接>>>>>>>《图解RabbitMQ》在日常开发中,都离不开变量的声明,那么我们应该如何选择基本数据类型还是包装类型呢?
个人理解:包装类就是将基本数据类型封装其对应的对象,并赋予了一些基本数据类型没有的特性。
| 包装类 | 基本类型 |
|---|---|
| Boolean | boolean |
| Byte | byte |
| Character | char |
| Short | short |
| Integer | int |
| Long | long |
| Float | float |
| Double | double |
自动拆箱、装箱,自JDK1.5之后支持,在此之前都是手动装箱、拆箱,在编译时期进行自动类型的转换。
注意拆装箱的箱子是指=左侧,也就是往=左侧拆箱装箱。
//手动装箱
int a=10;
Integer b=Integer.valueOf(a);
//手动拆箱
int c=b.intValue();
//自动装箱
Integer a=10;
//自动拆箱
int b=a;
提高了一些其对应基本数据类型的操作方法,还有额外的静态常量MAX_VALUE、MIN_VALUE来取出其取值范围的最大最小值,还有转换成各种进制字符串的方法。下图以Integer类为例:

下表为各个包装类通用的方法。xxx为其类型。
| 方法名称 | 描述 |
|---|---|
xxxValue() | 将包装类型转换为基本数据类型的值。 |
parseXxx(String s) | 将字符串解析为相应的包装类型的值。 |
valueOf(Xxx x) 或 valueOf(String s) | 将基本数据类型或字符串转换为相应的包装类型的对象。 |
toString() | 返回此包装类型对象的字符串表示形式。 |
equals(Object obj) | 比较两个对象是否相等。 |
compareTo(Xxx x) | 与另一个同类型的对象进行比较。 |
hashCode() | 返回对象的哈希码值。 |
getClass() | 返回对象的运行时类。 |
可以支持在泛型参数或者集合中使用。
因包装类为对象,因此未被分配空间时,其初始化为null。
我们来看一下阿里巴巴代码规范中有关这部分的说明,通过1、2两点可以理解,假如数据库中查找出的结果为null,而我们用基本数据类型接受返回值,那么就会触发自动拆箱操作并抛出NPE。

总结一下:
集合、泛型中使用,而基本类型不可以。拆箱装箱也会影响性能。是否存在null的情况。如果存在,那么则使用包装类。| 区别 | 基本数据类型 | 包装类 |
|---|---|---|
| 数据类型 | int、char、boolean 等 | Integer、Character、Boolean 等 |
| 存储方式 | 栈内存 | 堆内存 |
| 可空性 | 不可为 null | 可为 null |
| 自动装箱与自动拆箱 | 不支持 | 支持 |
| 集合框架的使用 | 不可作为集合元素类型 | 可作为集合元素类型 |
有关于变量声明选择包装类还是基本类型有哪些讲究?到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。
