03-包装类

nobility 发布于 2021-07-31 03-Java常用工具类 2604 次阅读


包装类

继承关系

所有包装类都无法被继承,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)静态方法,都将基本数据类型转换为字符串,虽然为基本数据类型加上空字符串更简单可以转换,但是由于会产生空字符串的垃圾空间,所以不推荐

加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2021-07-31