什么是包装类
包装类可以简单理解为对基本数据类型
的功能拓展,最终以封装为 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 | /** |
v1.5.2