10. 基本类型对应的包装类
一、通过包装类,可以将基本类型的值包装成对象
1. Java提供的8种基本数据类型不支持面向对象的编程机制,主要是为了照顾程序员的传统习惯
2. 基本数据类型的方便性:可以进行简单、有效的常规数据处理
3. 基本数据类型的制约:所有引用类型的变量都继承了Object类,都可当成Object类型变量使用,但基本数据类型的变量就不可以,如果有个方法需要Object类型的参数,但实际需要的值却是2、3.14等数值,这就比较难以处理
4. 包装类的提出,成功解决了8种基本数据类型的变量不能当成Object类型变量使用的问题
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
二、自动装箱 & 自动拆箱
1. 在JDK1.5之前,并没有这两项功能,所以只能通过以下途径实现
- 把基本数据类型变量变成包装类实例:使用对应包装类的valueOf()静态方法
- 获得包装类实例中包装的基本类型变量:使用包装类提供的xxxValue()实例方法
2. 自动装箱:可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给Object变量
3. 自动拆箱:可以把包装类变量直接赋给一个对应的基本类型变量
// ex1:直接把一个基本类型变量赋给Integer对象 Integer inObj = 5; // ex2:直接把一个boolean类型变量赋给一个Object类型的变量 Object boolObj = true; // ex3:直接把一个Integer对象赋给int类型的变量 int it = inObj;
补:有了自动装箱、自动拆箱和包装类的帮助,开发者便可以把基本类型的变量“近似”地当成对象使用,也可以把包装类实例“近似”地当成基本类型的变量使用。
三、基本类型变量和字符串之间的转换
1. 字符串类型 → 基本类型
- 使用包装类提供的parseXxx(String s)静态方法,除Character之外的所有包装类都提供了该方法
- 使用包装类提供的valueOf(String s)静态方法
2. 基本类型 → 字符串类型
- 使用String类提供的valueOf(要转换的基本类型 形参名)静态方法
- 将基本类型变量和""进行连接运算
// ex1:把字符串转换成int变量 String str1 = "123"; int it1 = Integer.parseInt(str1); int it2 = Integer.valueOf(str1); // ex2:把字符串转换成double变量 String str2 = "3.14"; double db1 = Double.parseDouble(str2); double db2 = Double.valueOf(str2); // ex3:把double变量转换成字符串 String str3 = String.valueOf(3.14); String str4 = 3.14 + ""; // ex4:把boolean变量转换成字符串 String str5 = String.valueOf(true); String str6 = true + "";