包装类(Wrapper)的使用
一、基本说明
1.针对八种基本数据类型定义相应的引用类型—包装类(封装类),有了类的特点,就可以调用类中的方法,Java才是真正的面向对象
2.Java提供了8中基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征,需要掌握基本数据类型、包装类、String三者之间的相互转换。
3.JDK 5.0新特性:自动装箱与自动拆箱
代码:
package java6;
import org.junit.Test;
public class WrapperTest {
public void method(Object obj) {
System.out.println(obj);
}
// 基本数据类型---->包装类:调用包装类的构造器
@Test
public void test1() {
int num1 = 10;
// System.out.println(num1.toString());//出错
Integer in1 = new Integer(num1);
System.out.println(in1.toString());
Integer in2 = new Integer("123");
System.out.println(in2.toString());
// 报异常:abc无法转换
// Integer in3 = new Integer("123abc");
// System.out.println(in3.toString());
Float f1 = new Float(12.3f);
Float f2 = new Float("12.3");
System.out.println(f1);
System.out.println(f2);
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("true");
Boolean b3 = new Boolean("true123");
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);// false//可查看源码查明情况
Order order = new Order();
System.out.println(order.isMale);// false
System.out.println(order.isFemale);// null
System.out.println("*******************************");
}
// 包装类---->基本数据类型:调用包装类的xxxValue()
@Test
public void test2() {
Integer in1 = new Integer(12);
int i1 = in1.intValue();
System.out.println(i1 + 1);
Float f1 = new Float(12.3);
float f2 = f1.floatValue();
System.out.println(f2);
System.out.println("*******************************");
}
/*
* JDK 5.0新特性:自动装箱与自动拆箱
*/
@Test
public void test3() {
int num1 = 10;
// 基本数据类型---->包装类的对象
method(num1);// 10
// 自动装箱:基本数据类型---->包装类
int num2 = 10;
Integer in1 = num2;
boolean b1 = true;
Boolean b2 = b1;
// 自动拆箱:包装类---->基本数据类型
System.out.println(in1.toString());// 10
int num3 = in1;
System.out.println("********************************");
}
// 基本数据类型、包装包---->String类型:调用String重载的valueOf(Xxx xxx)
@Test
public void test4() {
int num1 = 10;
//方式一:连接运算
String str1 = num1 +"";
//方式二:调用String的valueof(Xxx xxx)
float f1 = 12.3f;
String str2 = String.valueOf(f1);//"12.3"
Double d1 = new Double(12.4);
String str3 = String.valueOf(d1);
System.out.println(str2);//"12.3"
System.out.println(str3);//"12.4"
System.out.println("***********************************");
}
//String类型---->基本数据类型、包装类:调用包装类的parseXxx()
@Test
public void test5() {
String str1 = "123";
//错误情况:
// int num1 = (int)str1;
// Integer in1 = (Integer)str1;//无子父类关系
//可能会报NumberFormatException的异常
int num2 = Integer.parseInt(str1);
System.out.println(num2 + 1);
String str2 = "true";
String str3 = "true123";
boolean b1 = Boolean.parseBoolean(str2);
boolean b2 = Boolean.parseBoolean(str3);
System.out.println(b1);//true
System.out.println(b2);//false
}
}
class Order {
boolean isMale;// 一个基本数据类型
Boolean isFemale;// 一个类
}
输出 :
10
123
12.3
12.3
true
true
false
false
null
*******************************
13
12.3
*******************************
10
10
********************************
12.3
12.4
***********************************
124
true
false