包装类
继承关系
所有包装类都无法被继承,String类和System类也无法被继承
对应关系表
| 基本类型 | 对应包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
装箱与拆箱
/*
* 手动装箱拆箱
*/
Integer integer = new Integer("1"); //不推荐
Integer integer = new Integer(1); //不推荐
Integer integer = Integer.valueOf(1);
Integer integer = Integer.valueOf("1");
//可以是基本数据类型,也可以是字符串
//字符串若不能转换则会抛出NumberFormatException数字格式化异常
int i = integer.intValue(); //为某个对象拆箱,所以是成员方法
double i = doubleI.doubleValue(); //xxxValue方法
/*
* 1.5后自动装箱拆箱
*/
Integer integer = 1; //编译器会自动调用Xxx.valueOf()方法
//Integer integer = "1"; //报错,若是字符串还是需要手动装箱或字符串转换后自动装箱的
int i = integer; //编译器自动调用x.xxxValue()方法
//Integer integer = null;
//int i = integer; //抛出空指针异常,因为编译器会自动调用i.intValue()方法
Integer a = 128;
Integer b = 128;
System.out.println(a==b); //false
System.out.println(a.equals(b)); //true
Integer a = 127;
Integer b = 127;
Integer c = new Integer(127);
System.out.println(a==b); //true
System.out.println(a==c); //false,new关键字会创建新对象
System.out.println(a.equals(b)); //true
//自动缓存[-128,127]的包装类对象,所以再范围内使用的是缓存中的对象,不再才创建新对象
字符串转换基本数据类型
除了Character外,每个包装类都有对应static xxx parseXxx(String s)的静态方法,将字符串转换成对应基本数据类型,若有非数字字符出现则会抛出NumberFormatException异常。但是Boolean.parseBoolean()比较特殊,只有true才会返回true,其他一律返回false
包括Character,每个包装类都有对应static String toString(xxx x)的静态方法和String类中的static String valueOf(xxx x)静态方法,都将基本数据类型转换为字符串,虽然为基本数据类型加上空字符串更简单可以转换,但是由于会产生空字符串的垃圾空间,所以不推荐

Comments NOTHING