1. 程式人生 > >Java中資料型別及其之間的轉換

Java中資料型別及其之間的轉換

基本的資料型別

基本型別有以下四種: 1)int長度資料型別有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、 2)float長度資料型別有:單精度(32bits float)、雙精度(64bits double),JAVA中將小數預設為double型別,若要定義float需在資料後面用f宣告; 3)boolean型別變數的取值有:ture、false 4)char資料型別有:unicode字元,16位 對應的類型別:Integer、Float、Boolean、Character、Double、Short、Byte、Long

基本的資料型別由低階到高階分別為:(byte、short、char)——int——long——float——double

PS:此處的“級別”是指表示值的範圍的大小。

資料型別之間的轉轉換

分為以下幾種情況:

1)低階到高階的自動型別轉換;

2)高階到低階的強制型別轉換(會導致溢位或丟失精度);

3)基本型別向類型別轉換;

4)基本型別向字串的轉換;

5)類型別向字串轉換

基本資料型別之間的轉換規則 1.在一個雙運算元以及位運算等算術運算式中,會根據運算元的型別將低階的資料型別自動轉換為高階的資料型別,分為以下幾種情況:

1)只要兩個運算元中有一個是double型別的,另一個將會被轉換成double型別,並且結果也是double型別;

2)只要兩個運算元中有一個是float型別的,另一個將會被轉換成float型別,並且結果也是float型別;

3)只要兩個運算元中有一個是long型別的,另一個將會被轉換成long型別,並且結果也是long型別;

4)兩個運算元(包括byte、short、int、char)都將會被轉換成int型別,並且結果也是int型別。  

2. 如果低階型別為char型,向高階型別(整型)轉換時,會轉換為對應ASCII碼值,再做其它型別的自動轉換。

3. 對於byte,short,char三種類型而言,他們是平級的,因此不能相互自動轉換,可以使用下述的強制型別轉換。 如:

short i=99 ; char c=(char)i; System.out.println("output:"+c);

4. 不能在布林值和任何數字型別間強制型別轉換;

5. 不同級別資料型別間的強制轉換,可能會導致溢位或精度的下降。

6. 當位元組型別變數參與運算,java作自動資料運算型別的提升,將其轉換為int型別。例如:byte b;     b=3;     b=(byte)(b*3);//必須宣告byte。

包裝資料型別與基本資料型別之間的轉換

簡單型別的變數轉換為相應的包裝類,可以利用包裝類的建構函式。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value) 而在各個包裝類中,總有形為××Value()的方法,來得到其對應的簡單型別資料。利用這種方法,也可以實現不同數值型變數間的轉換,例如,對於一個雙精度實型類,intValue()可以得到其對應的整型變數,而doubleValue()可以得到其對應的雙精度實型變數。1.字串與其它型別間的轉換其它型別向字串的轉換 ①呼叫類的串轉換方法:X.toString(); ②自動轉換:X+“”; ③使用String的方法:String.volueOf(X);字串作為值,向其它型別的轉換 ①先轉換成相應的封裝器例項,再呼叫對應的方法轉換成其它型別 例如,字元中“32.1”轉換double型的值的格式為:new Float(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue() ②靜態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。

轉換例項

1基本型別向類型別轉換

正向轉換:通過類包裝器來new出一個新的類型別的變數 Integer a= new Integer(2); 反向轉換:通過類包裝器來轉換 int b=a.intValue();

通過類包裝器——>基本資料型別 eg1:int i=Integer.parseInt(“123”) 說明:此方法只能適用於字串轉化成整型變數 eg2: float f=Float.valueOf(“123”).floatValue() 說明:上例是將一個字串轉化成一個Float物件,然後再呼叫這個物件的floatValue()方法返回其對應的float數值。 eg3: boolean b=Boolean.valueOf(“123”).booleanValue() 說明:上例是將一個字串轉化成一個Boolean物件,然後再呼叫這個物件的booleanValue()方法返回其對應的boolean數值。 eg4:double d=Double.valueOf(“123”).doubleValue() 說明:上例是將一個字串轉化成一個Double物件,然後再呼叫這個物件的doubleValue()方法返回其對應的double數值。 eg5: long l=Long.valueOf(“123”).longValue() 說明:上例是將一個字串轉化成一個Long物件,然後再呼叫這個物件的longValue()方法返回其對應的long數值。 eg6: char=Character.valueOf(“123”).charValue() 說明:上例是將一個字串轉化成一個Character物件,然後再呼叫這個物件的charValue()方法返回其對應的char數值。

2基本型別向字串的轉換 正向轉換: 如下: System.out.println(""+2+3);// “""”把2轉成字串操作; System.out.println(2+3);   // 不存在轉換。 System.out.println(2+3+"");// 前兩個數值相加後,被“""”轉成字串。 System.out.println(2+""+3);// 同第一個。

輸出顯示為:23,5,5,23

3類型別向字串轉換

正向轉換:因為每個類都是object類的子類,而所有的object類都有一個toString()函式,所以通過toString()函式來轉換即可 反向轉換:通過類包裝器new出一個新的類型別的變數 eg1: int i=Integer.valueOf(“123”).intValue() 說明:上例是將一個字串轉化成一個Integer物件,然後再呼叫這個物件的intValue()方法返回其對應的int數值。 eg2: float f=Float.valueOf(“123”).floatValue() 說明:上例是將一個字串轉化成一個Float物件,然後再呼叫這個物件的floatValue()方法返回其對應的float數值。 eg3: boolean b=Boolean.valueOf(“123”).booleanValue() 說明:上例是將一個字串轉化成一個Boolean物件,然後再呼叫這個物件的booleanValue()方法返回其對應的boolean數值。 eg4:double d=Double.valueOf(“123”).doubleValue() 說明:上例是將一個字串轉化成一個Double物件,然後再呼叫這個物件的doubleValue()方法返回其對應的double數值。 eg5: long l=Long.valueOf(“123”).longValue() 說明:上例是將一個字串轉化成一個Long物件,然後再呼叫這個物件的longValue()方法返回其對應的long數值。 eg6: char=Character.valueOf(“123”).charValue() 說明:上例是將一個字串轉化成一個Character物件,然後再呼叫這個物件的charValue()方法返回其對應的char數值。