包装类
什么是包装类
包装类就是基本类型相对应的8个基本类型对象
包装类的作用
就是将基本数据类型转换成对象;包装类中有相对应的基本类型相关的常量和一些方法方便调用
8个基本类型对于的8个包装类
基本类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
包装类的基本使用
public class test {
public static void main(String[] args) {
Integer a = new Integer(3);//包装对象,在堆里生成
Integer b = Integer.valueOf(9);//使用静态方法,将基本类型转化为包装对象
//把包装对象转化成基本类型
int c = a.intValue();
double d = b.doubleValue();
//把字符串转化为字符串包装类对象
Integer e = new Integer("4517");
Integer f = Integer.parseInt("54584");//这些字符串中不能有字母
//把包装类对象转化为字符串
String str = f.toString();
//Integer包装类中有int基本类型相关的常量和一些方法
System.out.println("int类型最大的整数:"+Integer.MAX_VALUE);
//int类型最大的整数:2147483647
}
}
包装类的自动装箱和拆箱
什么是自动拆箱,自动装箱?
- 就是编辑器蜜糖,编辑器自己默认的调用包装类的静态方法。
- 完成自动拆箱和包箱
public class testAutoBox {
public static void main(String[] args) {
Integer a = 234;//自动装箱 Integer a = Integer.valueOf(234);
int b = a; //自动 拆箱 。int b = a.intValue();
//注意因为自动装箱,拆箱容易引发的错误。当对象为空时,不能调用方法
Integer c = null;
//if(c!=null){
int d = c;//这句话会引发异常。自动拆箱,调用了:c.intValue()。但是c为null
//}
//Integer缓存[-128,127]之间的数
/*
* 就是使得当创建[-128,127]之间的数为包装类时,他们都是一个对象,因为在Integer
* 包装类中有一个Integer数组cache[]已经缓存了[-127,128]之间的Ibteger对象
*/
Integer in1 = Integer.valueOf(128);
}
}
java面试题
包装类和基本数据类型的选择?
我们知道正确的使用包装类,可以提供程序的执行效率,可以使用已有的缓存,一般情况下选择基本数据类型还是包装类原则有以下几个。
① 所有 POJO 类属性必须使用包装类;
② RPC 方法返回值和参数必须使用包装类;
③ 所有局部变量推荐使用基本数据类型。