1.包装类的概述
java是面向对象的语言,但不是“纯面向对象”,基本数据类型就不是对象。但是我们在实际使用中经常需要将基本数据转化成对象,便于操作。比如:Object[]数组操作中,我们就需要将基本类型数据转化成对象!
为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。
包装类均位于java.lang包,以下是包装类和基本数据类型的对应关系:
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。
在这八个包装类中,除了Character和Boolean之外都是“数值型”,数值型是java.lang.Number的子类。Number类是抽象类,因此它的抽象方法,所有子类都需要提供实现。Number类提供了抽象方法:byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue(),意味着所有的数值型包装类都可以互相转型。
对于包装类说,这些类的用途主要包含两种:
-
作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[]、集合等的操作。
-
包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。
2.基本类型&包装类
2.1基本类型转包装类
我们可以通过包装类提供的构造方法,可以把基本类型或字符串类型转化为包装对象。下面以Integer构造方法API截图,其它包装类的构造方法基本相同。
【示例】实例化包装对象案例
// 基本数据类型转化为包装类对象
Integer i1 = new Integer(12);
Float f2 = new Float(1.23);
// 字符串转化为包装类对象
Integer i2 = new Integer("123");
Float f2 = new Float("1.23");
我们还可以通过包装类的valueOf()静态方法,把字符串或基本数据类型转化为包装对象。
【示例】基本类型或字符串类型转化为包装对象
// 基本数据类型转化为包装类型对象
Double f1 = Double.valueOf(1.23);
Integer i1 = Integer.valueOf(123);
// 字符串类型转化为包装类型对象
Double f2 = Double.valueOf("1.23");
Integer i2 = Integer.valueOf("123");
基本类型转换成包装对象,注意事项:
-
针对Character类型,字符串不能转化为Character类型的包装对象。
-
针对Boolean类型,只有字符串为“true”(不区分大小写)的时候,转化为包装对象的值才为true,否则都为false。
-
数值型的包装类中(不包含Character和Boolean),形参字符串的内容为必须为数值型,否则抛出NumberFormatException异常。
2.1包装类转基本类型
数值型包装类是java.lang.Number的子类,Number类提供了抽象方法:byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue(),意味着所有的数值型包装类都可以互相转型。
【示例】数值型包装对象转化为基本类型
// 实例化一个包装类对象
Double d = new Double("1.23");
// 获取包装对象中的int数值
int num = d.intValue();
// 获取包装对象中的double数值
double dou = d.doubleValue();
// 输出:num:1 , dou:1.23
System.out.println("num:" + num + " , dou:" + dou);
非数值型包装类中,Boolean类型对象只能转化为boolean类型,因为它只有booleanValue()方法;Character类型对象只能转化为char类型,因为它只有charValue()方法。
【示例】非数值型包装对象转化为基本类型
// Boolean对象转化为boolean类型
Boolean b = new Boolean("true");
boolean flag = b.booleanValue();
System.out.println("flag:" + flag); // 输出:flag:true
// Character对象转化为char类型
Character c = new Character('A');
char cc = c.charValue();
System.out.println("char:" + cc); // 输出:char:A
3.基本类型&字符串
3.1字符串转基本类型
通过包装类中的静态方法,把字符串转化成基本数据类型。
包装类 | 静态方法 | 方法描述 |
---|---|---|
Byte | static byte parseByte(String s) | 将字符串参数解析为带符号的十进制byte 。 |
Short | static short parseShort(String s) | 将字符串参数解析为带符号的十进制short 。 |
Integer | static int parseInt(String s) | 将字符串参数解析为带符号的十进制整数。 |
Float | static float parseFloat(String s) | 返回一个新 float值,该值被初始化为用指定字符串表示的值。 |
Double | static double parseDouble(String s) | 返回一个新 double值,该值被初始化为用指定字符串表示的值。 |
Boolean | static boolean parseBoolean(String s) | 将字符串参数解析为boolean值。 |
【示例】字符串转基本类型案例
// 字符串转double基本数据类型
System.out.println(Double.parseDouble("123.4") + 0.6); // 输出:124.0
// 字符串转int基本数据类型
System.out.println(Integer.parseInt("123") + 77); // 输出:200
注意事项:
-
不能把字符串转化为char类型,因为没有parseChar(String value)方法。
-
针对Boolean类型,只有字符串为“true”的时候,转化为基本类型的值才为true,否则都为false。
-
整数型包装类,字符串中的内容必须是十进制整数;浮点型包装类中,字符串中的内容必须为十进制整数或浮点数,否则抛出NumberFormatException异常。
3.2基本类型转字符串
通过包装类中的静态方法,也就是toString()方法,把基本数据类型转化成字符串。
包装类 | 方法 | 方法描述 |
---|---|---|
所有包装类 | String toString() | 返回对象的字符串表示形式 |
Byte | static String toString(byte b) | 把byte类型转化为字符串返回 。 |
Short | static String toString(short s) | 把short类型转化为字符串返回 。 |
Integer | static String toString(int i) | 把int类型转化为字符串返回 。 |
Float | static String toString(float f) | 把float类型转化为字符串返回 。 |
Double | static String toString(double d) | 把double类型转化为字符串返回 。 |
Boolean | static String toString(boolean b) | 把boolean类型转化为字符串返回 。 |
Character | static String toString(char c) | 把char类型转化为字符串返回 。 |
【示例】基本数值转成字符串案例
// 把int类型转化成字符串
System.out.println(Integer.toString(123) + "A"); // 输出:"123A"
// 把double类型转化为字符串
System.out.println(Double.toString(123.4) + "A"); // 输出:"123.4A"
// 把char类型转化成字符串
System.out.println(Character.toString('A') + "A"); // 输出:"AA"
思考:还有那些方式能把基本数据类型转化为字符串呢?
ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。