基本資料型別的轉換
基本資料型別的轉換
型別轉換有兩種方式:自動型別轉換和強制型別轉換。
自動型別轉換:
定義:當把一個表數範圍小的數值或變數直接賦給另一個表數範圍大的變數時,系統可以進行自動型別轉換,否則就需要強制型別轉換。
通俗的講:有兩瓶水,當把小瓶裡的水倒入大瓶中時,不會有任何問題。
下圖所示,箭頭左邊的數值型別可以自動型別轉換為箭頭右邊的數值型別。
注:當把任何基本型別的值和字串值進行連線運算時,基本型別的值將自動型別轉換為字串型別。如果希望把基本資料型別的值轉換為字串時,可以把基本資料型別的值和一個空字串進行連線。如:
String str = 3.5f + "";
//下面輸出字串3.5
System.out.println(str);
//下面語句輸出7Hello!
System.out.println(3 + 4 + "Hello!");
//下面語句會輸出Hello!34
System.out.println("Hello!" + 3 + 4);
強制型別轉換:
即將上面圖片箭頭右邊的型別轉換為左邊的型別,則必須進行強制型別轉換,強制型別轉換的語法格式是:(targetType)value。
通俗的講:把大瓶子裡的水倒入一個小瓶子中,如果大瓶子水不多還好,但如果大瓶子裡水很多,將會導致溢位,從而造成資料丟失,這種轉換也稱為“縮小轉換”。
public class NarrowConversion
{
public static void main(String[] args)
{
int iValue = 233;
//強制把一個int型別的值轉換為byte型別的值
byte bValue = (byte)iValue;
//將輸入-23
System.out.println(bValue);
double dValue = 3.98;
//強制把一個double型別的值轉換為int型別的值
int tol = (int)dValue;
//將輸出3
System.out.println(tol);
}
}
在上述程式中:
1.將233強制轉換為byte型別,從而變成23,這就是典型的溢位。
將32位的int型別賦給8位的byte型別,將會截斷前面的24位,只保留最右邊的8位,然後將該補碼轉換為原碼,計算成十進位制得-23。
2.將一個浮點數強制型別轉換為整型時,會直接截斷浮點數的小數部分。
注:在通常情況下,字串不能直接轉換為基本資料型別,但通過基本型別對應的包裝類則可以實現把字串轉換成基本型別。例如,把字串轉換為int型別,可通過如下程式碼實現:
String a = "45";
//使用Integer的方法將一個字串轉換成int型別
int iValue = Integer.parseInt(a);
java的8種基本型別都提供了對應的包裝類:boolean對應Boolean、byte對應Byte、short對應Short、int對應Integer、long對應Long、char對應Char、float對應Float、double對應Double,8個類都提供了一個parseXxx(String str)靜態方法用於將字串轉換成基本型別。