包装类
1.概念:8种基本数据对应的引用/对象类型,称为基本包装类。
2.基本数据类型对应 包装类:位于java.lang包中【重点】
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
3.数据类型之间的转换
①int和Integer之间的转换
int---->Integer之间的转换
(1)Integer i1 = new Integer(12); //借助 Integer的构造方法
(2)Integer i2 = Integer.valueOf(12);// 借助Integer中静态方法 valueOf
Integer---->int
(1)int a = i2.intValue();
②String和Integer之间的转换
String---->Integer
(1)Integer i3 = new Integer("123");
(2)Integer i4 = Integer.valueOf("123");
Integer---->String
(1)String s1 = i4.toString();
(2)String s2 = i4+""; //利用的字符串的拼接
③int 和 String 之间的转换
int---->String
int a = 5;
(1)String s3 = a + "";//注意:基本数据类型没有 toString方法
String—>int
(1)int a3 = Integer.parseInt("123");//借助 Integer类中静态方法 【开发应用重点】
注意:String 类型数据转换为int或者Integer时,要求转换的字符串必须是数值类型,否则会运行报错,错误信息为:java.lang.NumberFormatException(数值类型转换异常)
4.装箱、拆箱
①JDK5.0之后提供自动装箱和拆箱的功能,即基本数据类型和对应包装类型之间可以相互转换。
②装箱:基本数据类型转换为对应的包装类型的过程。 Integer i = 12;
拆箱:包装类型转换为基本数据类型的过程。int a = i;
③自动装箱原理:【面试重点+难点】
(1)自动装箱底层 调用时 Integer类中 valueOf方法完成转换。
public static Integer valueOf(int i){
if(i>= -128 && i<=127)
return 对应的常量池的包装结果;
return new Integer(i);
}
(2)为了提高转换的效率,Integer中将-128~127作为常用数据段进行预先包装处理,把包装结果存储在方法区常量池中,也称为缓冲区。
面试题目:
Integer i1 = 12;
Integer i2 = 12;
System.out.println(i1==i2);//true
Integer i3 = 129;
Integer i4 = 129;
System.out.println(i3==i4);//false
5.实际开发应用重点:【开发应用重点】
(1)作用:可以区分程序中有效数据和无效数据,例如:0和null;0.0和null等
(2)场景:通常将类中属性由之前的基本数据类型 改变为 对应包装类型 ---->区分数据的有效性。