Java資料類型之間的轉換(轉),java資料類型轉換
這是我寫的第一篇筆記,自己會不定時更新內容中有問題的地方,也希望大家多多指正.共同進步!
一 基本的資料類型
基本的資料類型有一下四種:
1> int 長度資料類型有: byte(8bits),short(16btis), int(32bits) ,long(64bits);
2>float 長度資料類型有:單精確度(32bits float) ,雙精確度(64bits double) ,Java中將小數預設為double類型,若要定義為float需要在後面用f聲明;
3>boolean 類型變數的取值有:ture, false;
4>char資料類型有:unicode字元,16位
基礎資料型別 (Elementary Data Type):int,float,boolean,char,double,short,byte,long,
對應的封裝類型:Integer,Float,Boolean,Character,Double,Short,Byte,Long
二 資料類型之間的轉換情況
分為以下幾情況:
1> 低級到進階的自動升級類型轉換;
2> 進階到低級的強制類型轉換(會導致溢出或者丟失精度);
3> 基本類型向類類型(封裝類型)轉換;
4> 基本類型向字串的轉換;
5> 類類型向字串轉換;
三 基礎資料型別 (Elementary Data Type)之間的轉換規則
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三種類型而言,他們是平級的,因此不能相互自動轉換,可以使用下述的強制類型轉換.
4.不能在布爾值和任何數字類型間強制類型轉換.
5.不同層級資料類型間的強制轉換,可能會導致溢出或精度的下降.
6.當位元組類型變數參與運算,Java作自動資料運算類型的提升,將其轉換為int類型.如:
int b7 =5;
byte b8= (byte) ((byte)b7*3);
四.封裝資料類型與基礎資料型別 (Elementary Data Type)之間的轉換
簡單類型的變數轉換為相應的封裝類,可以利用封裝類的建構函式.
Boolean(boolean value) , Character(char value),Integer(int value),Long(long value),Float(float value),Double(double value)
而在各個封裝類中,總有形為xxValue()的方法,來得到其對應的簡單類型資料.利用這種方法,也可以實現不同數值型變數間的轉換,例如,對於一個雙精確度執行個體類,intValue()可以得到其對應的整型變數.
1.字串與其他類型間的轉換
1>其他類型向字串的轉換
調用類的串轉換方法:X.toString();
自動轉換:X+" " ;
使用String的方法:String.valueOf(X);
2>字串作為值,向其他類型的轉換
先轉換成相應的封裝器執行個體,再調用對應的方法轉換成其他類型,如:double d = Double.valueOf(31.1);
靜態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)---->把char類型的資料轉換成int類型
五,轉換執行個體
1.基本類型間的轉換
正向轉換:通過類封裝器來new出一個新的類類型的變數
Integer a = new Integer(2);
反向轉換:通過類封裝器來轉換
int b = a.intValue();
通過類封裝器-->基礎資料型別 (Elementary Data Type)
ps1:int i = Integer.parseInt("123");
說明:此方法只能適用於字串轉化成整型變數
ps2: float f = Float.valueOf("123").floatValue();
說明:上例是講一個字串轉化成一個Float對象,然後再調用這個對象的floatValue()方法返回其對應的float數值.
ps3: boolean b = Boolean.valueOf("123").booleanValue();
說明:上例是將一個字串轉化成一個boolean對象,然後再調用這個對象的booleanValue()方法返回其對應的blooean數值.
ps4:double d = Double.valueOf("123").doubleValue();
說明:將一個字串轉換成一個double對象,然後再調用這個對象的doubleValue()方法返回其對應的double數值
ps5: long l = Long.valueOf("123").longValue();
說明:將一個字串轉換成一個long對象,然後再調用這個對象的longValue()方法返回其對應的long數值.
ps6:char = Character.valueOf("123").cahrValue()
說明:將一個字串轉換成一個Character對象,然後再調用這個對象的charValue()方法返回其對應的char數值.
2 基本類型向字串的轉化
正向轉換:
System.out.println("1"+2+3);-->123 轉化成字串操作
System.out.println(2+3);-->5 不存在轉化
System.out.println(2+3+"1");-->51 前兩個數值相加後,拼接後面的字串
3 類類型向字串轉換
正向轉換:因為每個類都是object類的子類,而所有的object類都有一個toString()函數,所以通過toString()函數來轉換即可
反向轉換:通過類封裝器new出一個新的類類型的變數
int i = Integer.valueOf("123").intValue()
float f = Float.valueOf("123").floatValue()
boolean b = Boolean.valueOf("123").booleanValue()
double d = Double.valueOf("123").doubleValue();
long l = Long.valueOf("123").longValue()
char c = Character.valueOf("123").charValue()
說明:將一個字串轉化成一個Character對象,然後調用這個對象的charvalue()方法返回其對應的char數值