java中類型轉換
① java數據類型轉換方式有幾種
如:String s = "123";
int num = Integer.parseInt(s);注意:當應用程序試圖將字元串轉換成一種數值類型,但該字元串不能轉換為適當格式時,會拋出異常java.lang.NumberFormatException
2、String類型轉換成double類型變數:使用double類的parseDouble(String )方法
如:String s = "123";
idouble num = Double.parseDouble(s);
3、int類型變數轉換成String類型變數:使用String類的valueOf(int )方法
如: int num = 123;
String s = String.valueOf(num);
4、Double類型變數轉換成String類型變數:使用String類的valueOf(int )方法
如: Double num = 123.0;
String s = String.valueOf(num);
5、String變數轉換成字元數組Char[]:使用String類的toCharArray()方法
如: String s = "123";
6、字元或字元數組轉換成字元串,也是通過valueOf()方法,不再給出示例代碼。
② java中的強制類型轉換
用(String)做強制類型轉換和用String.valueOf()區別在於:
String 就是直接強制轉化成String型的字元串,且有優先順序限制,像int i=123;不能String s=(String)i。
而String.valueOf()裡面的參數轉換可以是double、long、char[] 、long等等,沒限制,所以String s=String.valueOf(i)。
toString()方法返回的是這個對象的字元串表示,就像是這個對象的名字一樣,任何對象都可以有自己的名字,你可以重寫其toString()方法,給其賦予任意的名字。
但是調用toString()方法的對象不能為 null,否則會拋出異常:java.lang.NullPointerException。
例子如下:
(2)java中類型轉換擴展閱讀:
java中強制類型轉換
在Java中強制類型轉換分為基本數據類型和引用數據類型兩種,這里我們討論的後者,也就是引用數據類型的強制類型轉換。
在Java中由於繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。
因為子類擁有比父類更多的屬性、更強的功能,所以父類轉換為子類需要強制。那麼,是不是只要是父類轉換為子類就會成功呢?其實不然,他們之間的強制類型轉換是有條件的。
當我們用一個類型的構造器構造出一個對象時,這個對象的類型就已經確定的,也就說它的本質是不會再發生變化了。
在Java中我們可以通過繼承、向上轉型的關系使用父類類型來引用它,這個時候我們是使用功能較弱的類型引用功能較強的對象,這是可行的。但是將功能較弱的類型強制轉功能較強的對象時,就不一定可以行了。
舉個例子來說明。比如系統中存在Father、Son兩個對象。首先我們先構造一個Son對象,然後用一個Father類型變數引用它:
Father father = new Son();
在這里Son 對象實例被向上轉型為father了,但是請注意這個Son對象實例在內存中的本質還是Son類型的,只不過它的能力臨時被消弱了而已,如果我們想變強怎麼辦?將其對象類型還原!
Son son = (Son)father;
這條語句是可行的,其實father引用仍然是Father類型的,只不過是將它的能力加強了,將其加強後轉交給son引用了,Son對象實例在son的變數的引用下,恢復真身,可以使用全部功能了。
前面提到父類強制轉換成子類並不是總是成功,那麼在什麼情況下它會失效呢?
當引用類型的真實身份是父類本身的類型時,強制類型轉換就會產生錯誤。例如:
Father father = new Father();
Son son = (Son) father;
這個系統會拋出ClassCastException異常信息。
所以編譯器在編譯時只會檢查類型之間是否存在繼承關系,有則通過;而在運行時就會檢查它的真實類型,是則通過,否則拋出ClassCastException異常。
所以在繼承中,子類可以自動轉型為父類,但是父類強制轉換為子類時只有當引用類型真正的身份為子類時才會強制轉換成功,否則失敗
③ Java中幾種常用數據類型之間轉換的方法
下面給你例舉10種Java中幾種常用的數據類型之間轉換方法:
1. short-->int 轉換
exp: short shortvar=0;
int intvar=0;
shortvar= (short) intvar
2. int-->short 轉換
exp: short shortvar=0;
int intvar=0;
intvar=shortvar;
3. int->String 轉換
exp: int intvar=1;
String stringvar;
Stringvar=string.valueOf (intvar);
4. float->String 轉換
exp: float floatvar=9.99f;
String stringvar;
Stringvar=String.valueOf (floatvar);
5. double->String 轉換
exp double doublevar=99999999.99;
String stringvar;
Stringvar=String.valueOf (doublevar);
6. char->String 轉換
exp char charvar=』a』;
String stringvar;
Stringvar=String.valueOf (charvar);
7 String->int、float、long、double 轉換
Exp String intstring=」10」;
String floatstring=」10.1f」;
String longstring=」99999999」;
String doubleString=」99999999.9」;
Int I=Integer.parseInt (intstring);
Float f= Integer.parseInt (floatstring);
Long lo=long. parseInt (longstring);
Double d=double. parseInt (doublestring);
8 String->byte、short 轉換
Exp String s=」0」;
Byte b=Integer.intValue(s);
Short sh=Integer.intValue(s);
9 String->char 轉換
Exp String s=」abc」;
Char a=s.charAt(0);
返回字元a
10 String-->boolean 轉換
String s=」true」;
Boolean flag=Boolean.valueOf (「s」);