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