什么是包装类
包装类可以简单理解为对基本数据类型的功能拓展,最终以封装为class的形式呈现。这是因为八大基本数据类型只能完成基本的算术或逻辑操作,无法实现诸如“字符串转换”等特殊操作。在以上背景下,包装类应运而生。
包装类分类
根据八大基本数据类型,包装类相应的可以分为八类,具体如下:
| 基本数据类型 | 对应包装类 |
|---|---|
| int | Integer |
| byte | Byte |
| short | Short |
| long | Long |
| char | Character |
| float | Float |
| double | Double |
| boolean | Boolean |
包装类详解(以Integer为例)
所在包
该类位于java.lang包下,使用时无需导包。
简述
先看一段JDK关于Integer的注释
1 | /** |
大体上是说,这是一个包含唯一类字段的类;类字段为int型,用来存储int型变量。除此之外,该类还提供了一些诸如int与String之间相互转换的方法,用于实现一些常见操作。
构造方法
有2个有参构造方法,分别为:Integer(int)和Integer(String)。JDK源码如下:
1 | /** |
首先来看Integer(int),该方法是根据一个形参int实例化一个Integer对象,内部细节就是将形参int赋值给Integer的类字段value。
再来看Integer(String),该方法使用一个String类型对象实例化Integer。内部实现稍微复杂一点点,先是用Integer静态成员方法将String转化为对应int值,然后再将获得的int值赋值给Integer类字段value。
成员方法
由于在实际开发中,我们用的最多的无非就是String与int的相互转化。因此,接着来我们主要总结一下这方面的成员方法。
| 用途 | 静态成员方法 | 非静态成员方法 |
|---|---|---|
String –> int | parseInt(String s)parseInt(String s, int radix) | |
int –> String | toString(int i)toString(int i, int radix) | |
String –> Integer | valueOf(String s)valueOf(String s, int radix) | |
Integer –> String | toString() | |
int –> Integer | valueOf(int i) | |
Integer –> int | intValue() |
另外,在阅读Integer源码中,发现了两个好玩的成员方法reverse(int i)和rotateLeft(int i, int distance),其中对于bit的操作很有启发性,现直接将源码贴在下方:
1 | /** |