包装类的使用1. 为什么要使用包装类? 为了使得基本数据类型的变量具备引用数据类型变量的相关特征(比如:封装性、继承性、多态性),我们给各个基本数据 类型的变量都提供了对应的包装类。 为了让基本数据类型也可以有引用类型的相关特征 一此功能 在使用基本数据类型时 相当于使用了引用类型 让基本类型有了引用类型的相关特征2. (掌握)基本数据类型对应的包装类类型 byte -> Byte short -> Short int -> Integer long -> Long float -> Float double ->Doublechar -> Character boolean -> Boolean3. 掌握基本数据类型 与 包装类之间的转换。3.1 为什么需要转换> 一方面,在有些场景下,需要使用基本数据类型对应的包装类的对象。此时就需要将基本数据类型的变量转换为包装类的对象。比如:ArrayList的add(Object obj);Object类的equals(Object obj)> 对于包装类来讲,既然我们使用的是对象,那么对象是不能进行+ - * /等运算的。为了能够进行这些运算,就需要将包装类的对象转换为基本数据类型的变量。3.2 如何转换:(装箱)基本数据类型 ---> 包装类:① 使用包装类的构造器 ② (建议)调用包装类的valueOf(xxx xx)(拆箱)包装类 ---> 基本数据类型:调用包装类的xxxValue()注意:原来使用基本数据类型变量的位置,改成包装类以后,对于成员变量来说,其默认值变化了!jdk5.0新特性:自动装箱、自动拆箱。
总结代码:
package chapter08_oop3_teacher.src.com.atguigu12.wrapper;import org.junit.Test;/*** ClassName: WrapperTest* Description:** @Author 尚硅谷-宋红康* @Create 9:02* @Version 1.0*/
public class WrapperTest {/*基本数据类型 ---> 包装类:① 使用包装类的构造器 ② (建议)调用包装类的valueOf(xxx xx)包装类 ---> 基本数据类型:调用包装类的xxxValue()*///包装类 ---> 基本数据类型:调用包装类的xxxValue()/** jdk5.0新特性:自动装箱、自动拆箱。* */@Testpublic void test4(){//自动装箱: 基本数据类型 ---> 包装类int i1 = 10;Integer ii1 = i1; //自动装箱System.out.println(ii1.toString());Integer ii2 = i1 + 1; //自动装箱Boolean bb1 = true;//自动装箱Float f1 = 12.3F; //自动装箱//自动拆箱:包装类 ---> 基本数据类型int i2 = ii1; //自动拆箱boolean b1 = bb1;//自动拆箱}@Testpublic void test3(){Account account = new Account();System.out.println(account.isFlag1);//falseSystem.out.println(account.isFlag2);//nullSystem.out.println(account.balance1);//0.0System.out.println(account.balance2);//null}@Testpublic void test2(){Integer ii1 = new Integer(10);int i1 = ii1.intValue();i1 = i1 + 1;Float ff1 = new Float(12.3F);float f1 = ff1.floatValue();Boolean bb1 = Boolean.valueOf(true);boolean b1 = bb1.booleanValue();}//基本数据类型 ---> 包装类:① 使用包装类的构造器 ② (建议)调用包装类的valueOf(xxx xx)@Testpublic void test1(){int i1 = 10;Integer ii1 = new Integer(i1);System.out.println(ii1.toString());float f1 = 12.3F;f1 = 32.2f;Float ff1 = new Float(f1);System.out.println(ff1.toString());String s1 = "32.1";Float ff2 = new Float(s1);// s1 = "abc";
// Float ff3 = new Float(s1); //报异常:NumberFormatExceptionboolean b1 = true;Boolean bb1 = new Boolean(b1);System.out.println(bb1);String s2 = "false";s2 = "FaLse123";s2 = "TrUe";Boolean bb2 = new Boolean(s2);System.out.println(bb2); //false --> true//推荐使用:int i2 = 10;Integer ii2 = Integer.valueOf(i2);Boolean b2 = Boolean.valueOf(true);Float f2 = Float.valueOf(12.3F);}}class Account{boolean isFlag1;Boolean isFlag2;double balance1; //0.0Double balance2; //null 0.0
}
String 与 基本数据类型、包装类之间的转换。 基本数据类型、包装类 ---> String类型:① 调用String的重载的静态方法valueOf(xxx xx) ; ② 基本数据类型的变量 + "" String类型 ---> 基本数据类型、包装类: 调用包装类的静态方法:parseXxx()
package chapter08_oop3_teacher.src.com.atguigu12.wrapper;import org.junit.Test;/*** ClassName: WrapperTest1* Description:** @Author 尚硅谷-宋红康* @Create 9:32* @Version 1.0*/
public class WrapperTest1 {/*基本数据类型、包装类 ---> String类型:① 调用String的重载的静态方法valueOf(xxx xx) ; ② 基本数据类型的变量 + ""String类型 ---> 基本数据类型、包装类: 调用包装类的静态方法:parseXxx()*/@Testpublic void test2(){String s1 = "123";int i1 = Integer.parseInt(s1);System.out.println(i1 + 10);String s2 = "true";boolean b1 = Boolean.parseBoolean(s2);//特别的
// String s3 = "123a";
// int i2 = Integer.parseInt(s3); //报错:NumberFormatException}@Testpublic void test1(){//方式1:调用String的重载的静态方法valueOf(xxx xx)int i1 = 10;String str1 = String.valueOf(i1);System.out.println(str1);//"10"boolean b1 = true;Boolean b2 = b1;String str2 = String.valueOf(b1);String str3 = String.valueOf(b2);//方式2:基本数据类型的变量 + ""String str4 = i1 + "";String str5 = b1 + "";}
}