數據類型自動轉換
阿新 • • 發佈:2019-05-11
類型 錯誤 字節 ole src 完成 int boolean 運算
為什麽要數據類型轉換?
Java程序中要求參與的計算的數據,必須要保證數據類型的一致性,如果數據類型不一致將發生類型的轉換。
自動轉換
特點:自動完成,無需幹預
規則:將 取值範圍小的類型 自動提升為 取值範圍大的類型 。
代碼舉例:
public class Demo01DataType { public static void main(String[] args) { int i = 1; byte b = 2; // byte x = b + i; // 報錯 //int類型和byte類型運算,結果是int類型.因為byte會自動提升為int類型int j = b + i; // long類型 賦值給float類型,也符合數據範圍從小到大 float f = 5656L; System.out.println(j); } }
轉換原理圖解
轉換規則:
- 範圍小的類型向範圍大的類型提升, byte、short、char 運算時直接提升為 int 。
- 數據範圍由小到大依次為byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
強制轉換
特點:人工幹預,強制完成
規則:將 取值範圍大的類型 強制轉換成 取值範圍小的類型 。
轉換格式:數據類型 變量名 = (數據類型)被轉數據值;
代碼舉例:
public class Demo02DataType { public static void main(String[] args) { //short類型變量,內存中2個字節 short s = 1; /* s = s + 1;出現編譯失敗 s和1做運算的時候,1是int類型,s會被提升為int類型 s+1後的結果是int類型,將結果在賦值會short類型時發生錯誤 short內存2個字節,int類型4個字節 必須將int強制轉成short才能完成賦值*/ s = (short) (s + 1);//編譯成功 // int i = 2.5; 編譯失敗 int i = (int) 2.5; //編譯成功 } }
轉換原理圖解
強烈註意:
- 浮點轉成整數,直接取消小數點,可能造成數據損失精度。不推薦使用
- int 強制轉成 short 砍掉2個字節,可能造成數據丟失,數據溢出。
- boolean類型的不能發生數據類型轉換
數據類型自動轉換