Java中數據類(lèi)型及其之間的轉換
基本的數據類(lèi)型
基本類(lèi)型有以下四種:
1)int長(cháng)度數據類(lèi)型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
2)float長(cháng)度數據類(lèi)型有:?jiǎn)尉龋?/font>32bits float)、雙精度(64bits double),JAVA中將小數默認為double類(lèi)型,若要定義float需在數據后面用f聲明;
3)boolean類(lèi)型變量的取值有:ture、false
4)char數據類(lèi)型有:unicode字符,16位
對應的類(lèi)類(lèi)型:Integer、Float、Boolean、Character、Double、Short、Byte、Long
基本的數據類(lèi)型由低級到高級分別為:(byte、short、char)——int——long——float——double
PS:此處的“級別”是指表示值的范圍的大小。
數據類(lèi)型之間的轉轉換
分為以下幾種情況:
1)低級到高級的自動(dòng)類(lèi)型轉換;
2)高級到低級的強制類(lèi)型轉換(會(huì )導致溢出或丟失精度);
3)基本類(lèi)型向類(lèi)類(lèi)型轉換;
4)基本類(lèi)型向字符串的轉換;
5)類(lèi)類(lèi)型向字符串轉換
基本數據類(lèi)型之間的轉換規則
1.在一個(gè)雙操作數以及位運算等算術(shù)運算式中,會(huì )根據操作數的類(lèi)型將低級的數據類(lèi)型自動(dòng)轉換為高級的數據類(lèi)型,分為以下幾種情況:
1)只要兩個(gè)操作數中有一個(gè)是double類(lèi)型的,另一個(gè)將會(huì )被轉換成double類(lèi)型,并且結果也是double類(lèi)型;
2)只要兩個(gè)操作數中有一個(gè)是float類(lèi)型的,另一個(gè)將會(huì )被轉換成float類(lèi)型,并且結果也是float類(lèi)型;
3)只要兩個(gè)操作數中有一個(gè)是long類(lèi)型的,另一個(gè)將會(huì )被轉換成long類(lèi)型,并且結果也是long類(lèi)型;
4)兩個(gè)操作數(包括byte、short、int、char)都將會(huì )被轉換成int類(lèi)型,并且結果也是int類(lèi)型。
2. 如果低級類(lèi)型為char型,向高級類(lèi)型(整型)轉換時(shí),會(huì )轉換為對應ASCII碼值,再做其它類(lèi)型的自動(dòng)轉換。
3. 對于byte,short,char三種類(lèi)型而言,他們是平級的,因此不能相互自動(dòng)轉換,可以使用下述的強制類(lèi)型轉換。 如:
short i=99 ;
char c=(char)i;
System.out.println("output:"+c);
4. 不能在布爾值和任何數字類(lèi)型間強制類(lèi)型轉換;
5. 不同級別數據類(lèi)型間的強制轉換,可能會(huì )導致溢出或精度的下降。
6. 當字節類(lèi)型變量參與運算,java作自動(dòng)數據運算類(lèi)型的提升,將其轉換為int類(lèi)型。例如:byte b;
b=3;
b=(byte)(b*3);//必須聲明byte。
包裝數據類(lèi)型與基本數據類(lèi)型之間的轉換
簡(jiǎn)單類(lèi)型的變量轉換為相應的包裝類(lèi),可以利用包裝類(lèi)的構造函數。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各個(gè)包裝類(lèi)中,總有形為××Value()的方法,來(lái)得到其對應的簡(jiǎn)單類(lèi)型數據。利用這種方法,也可以實(shí)現不同數值型變量間的轉換,例如,對于一個(gè)雙精度實(shí)型類(lèi),intValue()可以得到其對應的整型變量,而doubleValue()可以得到其對應的雙精度實(shí)型變量。
1.字符串與其它類(lèi)型間的轉換
⑴其它類(lèi)型向字符串的轉換
①調用類(lèi)的串轉換方法:X.toString();
②自動(dòng)轉換:X+“”;
③使用String的方法:String.volueOf(X);
⑵字符串作為值,向其它類(lèi)型的轉換
①先轉換成相應的封裝器實(shí)例,再調用對應的方法轉換成其它類(lèi)型
例如,字符中“32.1”轉換double型的值的格式為:new Float(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue()
②靜態(tài)parseXXX方法
String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );
③Character的getNumericValue(char ch)方法
具體可查閱api。
轉換實(shí)例
1)基本類(lèi)型向類(lèi)類(lèi)型轉換
正向轉換:通過(guò)類(lèi)包裝器來(lái)new出一個(gè)新的類(lèi)類(lèi)型的變量
Integer a= new Integer(2);
反向轉換:通過(guò)類(lèi)包裝器來(lái)轉換
int b=a.intValue();
通過(guò)類(lèi)包裝器——>基本數據類(lèi)型
eg1:int i=Integer.parseInt(“123”)
說(shuō)明:此方法只能適用于字符串轉化成整型變量
eg2: float f=Float.valueOf(“123”).floatValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Float對象,然后再調用這個(gè)對象的floatValue()方法返回其對應的float數值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Boolean對象,然后再調用這個(gè)對象的booleanValue()方法返回其對應的boolean數值。
eg4:double d=Double.valueOf(“123”).doubleValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Double對象,然后再調用這個(gè)對象的doubleValue()方法返回其對應的double數值。
eg5: long l=Long.valueOf(“123”).longValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Long對象,然后再調用這個(gè)對象的longValue()方法返回其對應的long數值。
eg6: char=Character.valueOf(“123”).charValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Character對象,然后再調用這個(gè)對象的charValue()方法返回其對應的char數值。
2)基本類(lèi)型向字符串的轉換
正向轉換:
如下:
System.out.println(""+2+3);// “""”把2轉成字符串操作;
System.out.println(2+3); // 不存在轉換。
System.out.println(2+3+"");// 前兩個(gè)數值相加后,被“""”轉成字符串。
System.out.println(2+""+3);// 同第一個(gè)。
輸出顯示為:23,5,5,23
3)類(lèi)類(lèi)型向字符串轉換
正向轉換:因為每個(gè)類(lèi)都是object類(lèi)的子類(lèi),而所有的object類(lèi)都有一個(gè)toString()函數,所以通過(guò)toString()函數來(lái)轉換即可
反向轉換:通過(guò)類(lèi)包裝器new出一個(gè)新的類(lèi)類(lèi)型的變量
eg1: int i=Integer.valueOf(“123”).intValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Integer對象,然后再調用這個(gè)對象的intValue()方法返回其對應的int數值。
eg2: float f=Float.valueOf(“123”).floatValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Float對象,然后再調用這個(gè)對象的floatValue()方法返回其對應的float數值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Boolean對象,然后再調用這個(gè)對象的booleanValue()方法返回其對應的boolean數值。
eg4:double d=Double.valueOf(“123”).doubleValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Double對象,然后再調用這個(gè)對象的doubleValue()方法返回其對應的double數值。
eg5: long l=Long.valueOf(“123”).longValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Long對象,然后再調用這個(gè)對象的longValue()方法返回其對應的long數值。
eg6: char=Character.valueOf(“123”).charValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Character對象,然后再調用這個(gè)對象的charValue()方法返回其對應的char數值。
聯(lián)系客服