为什么要有包装类(或封装类)
为了使基本数据类型的变量具有类的特征,引入包装类。
基本数据类型与对应的包装类:
包装类(Wrapper)的使用
- 基本数据类型包装成包装类的实例 —-装箱
- 通过包装类的构造器实现:
int i = 500;
Integer t = new Integer(i);
- 还可以通过字符串参数构造包装类对象:
Float f = new Float(“4.56”);
Long l = new Long(“asdf”); //NumberFormatException
- 自动装箱
- 获得包装类对象中包装的基本类型变量 —-拆箱
- 调用包装类的.xxxValue()方法:
- boolean b = bObj.booleanValue();
- 自动拆箱
- 调用包装类的.xxxValue()方法:
JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配。
字符串转换成基本数据类型
- 通过包装类的构造器实现:
int i = new Integer(“12”);
- 通过包装类的parseXxx(String s)静态方法:
Float f = Float.parseFloat(“12.1”);
- 基本数据类型转换成字符串
- 调用字符串重载的valueOf()方法:
String fstr = String.valueOf(2.34f);
- 更直接的方式:
String intStr = 5 + “”;//调用对应包装类的toString方法;
总结:基本类型、包装类与String类间的转换
例题:
public void test3() {
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j);//false
//Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],保存了从-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在
-128~127范围内时,可以直接使用数组中的元素,不用再去new了。目的:提高效率
Integer m = 1;
Integer n = 1;
System.out.println(m == n);//true
Integer x = 128;//相当于new了一个Integer对象
Integer y = 128;//相当于new了一个Integer对象
System.out.println(x == y);//false
}