包裝類(lèi)(封裝類(lèi)):
針對(duì)八種基本數(shù)據(jù)類(lèi)型,定義相應(yīng)的引用類(lèi)型。
基本數(shù)據(jù)類(lèi)型:boolean ?byte ?short int long char float double
封裝類(lèi):Bealoon ?Byte ?Short?Integer?Long Character Float Double
String類(lèi):三種數(shù)據(jù)類(lèi)型相互轉(zhuǎn)換
//基本數(shù)據(jù)類(lèi)型與包裝類(lèi)之間的轉(zhuǎn)換
@Test
public void test1(){
int i = 10;
System.out.println(i);//10;i不能使用toString方法,因?yàn)樗菍傩?,并不是?duì)象
boolean b = false;
①//基本數(shù)據(jù)類(lèi)型 ---> 對(duì)應(yīng)的包裝類(lèi):調(diào)用包裝類(lèi)的構(gòu)造器(這種數(shù)據(jù)類(lèi)型的默認(rèn)值都是null)
//Integer的構(gòu)造器有兩種:Integer(int value)和Integer(String s),但是s去掉雙引號(hào)后也必須是int型的
//同理,F(xiàn)loat類(lèi)型的也是float、double、string,但是最終類(lèi)型也應(yīng)該是float類(lèi)型的。如果基本實(shí)體都不是float類(lèi)型的,會(huì)報(bào)出NumberFormatException.
//Boolean類(lèi)型的比較特殊,形參如果不是true或者“true",其他的都是false。
Integer i1 = new Integer(i);
System.out.println(i1);//10;這里的i1就相當(dāng)于i1.toString(),i1為對(duì)象
Float f1 = new Float(12.3F);
System.out.println(f1);
②//包裝類(lèi)---->基本數(shù)據(jù)類(lèi)型:調(diào)用包裝類(lèi)xxx的xxxValue()方法
int i2 = i1.intValue();
System.out.println(i2);
float f2 = f1.floatValue();
System.out.println(f2);
//JDK5.0以后,便可以自動(dòng)裝箱和拆箱,其他數(shù)據(jù)類(lèi)型類(lèi)似
Integer i4 = i2;//i2 int型 ---> i4 Integer自動(dòng)裝箱
int i3 = i1;//i1 Integer--->i3 int型自動(dòng)拆箱
//基本數(shù)據(jù)類(lèi)型、包裝類(lèi) 與String之間的轉(zhuǎn)換
@Test
public void test2(){
//基本數(shù)據(jù)類(lèi)型、包裝類(lèi)---->String類(lèi):調(diào)用String類(lèi)的靜態(tài)的重載valueof(xxx x)方法
int i1 = 10;
String str1 = i1 + "";//以前用過(guò)的方法,"10";
Integer i2 = i1;
String str2 = String.valueOf(i1);//i2也可以,使用Stringde valueof方法
String str3 = String.valueOf(true);//"true"
//String類(lèi)---->基本數(shù)據(jù)類(lèi)型、包裝類(lèi):調(diào)用包裝類(lèi)的parseXxx(String str)方法
int i3 = Integer.parseInt(str2);
boolean b1 = Boolean.parseBoolean(str3);
//int i4 = (int)str2;//這種方法是錯(cuò)誤的,int與String一點(diǎn)關(guān)系都沒(méi)有,所以不可以這么轉(zhuǎn)。
}