一. 说明
包装类就是把基本类型的数据包装成对象。
二. 包装类表
基本数据类型 | 对应的包装类(引用数据类型) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
三. 手动转化包装类
接下来,我们以Integer为例,来尝试将基本数据类型转换为一个对象。
在过去,我们通过以下的方式来创建对象:
Integer a1 = new Integer(12);
但是这种方法已经“过时”了,不推荐再使用,如今我们通常采用下面的方法来创建对象:
Integer a2 = Integer.valueOf(12);
四.自动转化包装类
在实际开发中,为了方便我们将基本数据类型转换为对象,JAVA提供了十分方便的方法。
1. 自动装箱
Integer a3 = 12;
2. 自动拆箱
int a4 = a3;
通过自动拆箱,可以将对象a3自动转化为int基本类型的a4变量。
五. 包装类的用途
那么,包装类有什么作用呢?
JAVA中,泛型和集合不支持基本数据类型,只能支持引用数据类型。
例如在下面的ArrayList集合中,我们想仅允许向集合中添加int类型的变量,当我们在这里写上int,会发现并不支持,这个时候我们就需要用到包装类了。
如下图,我们将int改为Integer即可。
然后我们再往ArrayList中添加内容,就会发现可以直接添加数据,不需要将数据转化为对象再添加,这里就是刚刚前文所提到的自动装箱。
同样,在后面的int rs中,我们也没有将Interger对象转化为基本数据,而是java通过自动拆箱帮我们直接转化为了基本数据。
六. 包装类其他常见操作
1. 可以把基本类型的数据转换成字符串类型。
public class Test1 {
public static void main(String[] args) {
Integer a = 23;
String rs1 = Integer.toString(a);
System.out.println(rs1 + 1);
}
}
在上面的代码中,我们将Integer类型的a转化为了字符串rs1,将rs1+1打印出来会发现,打印出来的是231,而不是24,即将Integer成功转换为了字符串
同样,由于Integer肯定是继承了Object类的,这时我们也可以直接调用Object类的toString方法来将它转化为字符串。
String rs2 = a.toString();
其实,我们还有另一种方法将它转换为String类型的变量:
String rs3 = a + " ";
直接给a后面加个" "就可以了。
2. 可以把字符串类型的数值转换成数值本身对应的数据类型。
String ageStr = "29";
int ageI = Integer.parseInt(ageStr);
System.out.println(ageI + 1);
通过调用Integer的parseInt方法,就可以将Integer转换为其本身对应的数据类型。在这里打印出来的数字就是30了,而不是291。
其余的数据类型也是一样的,例如double类型的:
String scoreStr = "99.5";
double score = Double.parseDouble(scoreStr);
System.out.println(score + 0.5);
也是一样,调用parseDouble即可。
但在实际开发中,并不建议通过这种方法来转换,JAVA提供了一种更方便的方法:valueOf()
String ageStr = "29";
int ageI = Integer.valueOf(ageStr);
System.out.println(ageI + 1);
String scoreStr = "99.5";
double score = Double.valueOf(scoreStr);
System.out.println(score + 0.5);
这样,我们就不需要还去记parseDouble,parseInt等等不同名字了。
更重要的一点需要注意,这里的转换只支持数值!比如你要是给ageStr赋值一个123a啥玩意的非数值内容,肯定是不行的,就会报错了。同样,如果ageStr是29.85,你就不能用Integer来转换,要用Double来转换,否则也会出问题。