基本数据类型 | 包装类 |
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
一、简介
1、概念
Java是面向对象的语言,但是为了便于开发者的使用,Java中却沿用了C语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是当需要和Java其他对象结合使用,如存入集合中,就需要将基础数据类型实例封装为Java对象,为了面向对象的这一特性,基本数据类型中的每一个类型在java.lang包中都有一个包装类,即将每个基本类型都包装成了一个类。
常用的包装类可以分为三类:Character、Number、Boolean,继承关系如下图所示:
2、包装类与基础类型的对应关系
基本数据类型 | 包装类 | 缓存范围 |
char | Character | 0~127 |
boolean | Boolean | true、false |
byte | Byte | -128~127 |
short | Short | -128~127 |
int | Integer | -128~127 |
long | Long | -128~127 |
float | Float | 无 |
double | Double | 无 |
3、包装类和基础类型相互转换
//自动装箱
Integer total = 99;
//自定拆箱
int totalprim = total;
自动装箱就是自动将基本数据类型转换为包装器类型;自动拆箱就是自动将包装器类型转换为基本数据类型。自动装箱和拆箱都是在编译阶段就完成的。自动装箱的时候,java编译器会默认调用valueOf进行装箱,拆箱时会调用**Value方法。
二、特性
包装类的一些特性:
- 所有包装类都可以将与之对应的基本数据类型作为参数来创建它们的实例对象
- 除了Character类之外,其他包装类都可以将一个字符串作为参数来构造它们的实例
- Boolean类的构造方法参数为String类型时,若该字符串为true(不论大小写),则该对象表示true,否则表示false
- 当包装类Number构造方法的参数为String类型时,字符串不能为null,并且该字符串必须能够解析为基本类型的数据
三、用途
- 集合不允许存放基本数据类型,故常用包装类
- 包含了每种基本数据类型的相关属性,如最大值、最小值、所占位数等
- 作为基本数据类型对应的类型,提供了一系列实用的对象操作,如类型转换、进制转换等方法
四、常见考点
1、包装类中“==”与equals的用法比较
值得注意的是,包装类中的equals方法和String类一样,都是重写了Object类中的equals方法,因此比较的是内容而不是地址,而“==”比较的依然是引用变量的地址,只是当包装类型和与之相对应的基本类型进行“==”比较时会先做自动拆箱处理。
2、包装类缓存
部分包装类提供了对象的缓存,实现方式是在类初始化时提前创建好会频繁使用的包装类对象,当需要使用某个包装类的对象时,如果该对象包装的值在缓存的范围内,就返回缓存的对象,否则就创建新的对象并返回。