Java 要求變量、運算、賦值類型嚴格一致。現實中 1 和 1.0 無差別,但計算機存儲方式、佔用空間完全不同,必須通過類型轉換橋接。
| 類型 | 別名 | 方向 | 代碼要求 | 風險 |
|---|---|---|---|---|
| 自動類型轉換 | 隱式轉換 | 小範圍 → 大範圍 | 無需代碼,JVM 自動完成 | 整數→浮點可能丟失精度 |
| 強制類型轉換 | 顯式轉換 | 大範圍 → 小範圍 | 必須寫 (目標類型)值 | 精度損失、數值截斷、符號改變 |
byte → short/char → int → long → float → double
(short 和 char 互不轉換,均可轉 int)
可跳級:byte → int 直接轉換合法。
(目標類型) 需轉換的值
double d = 3.99;
int n = (int)d; // 結果 3,非四捨五入
int n = 1234; // 二進制 ...0000010011010010
byte b = (byte)n; // 取低 8 位:11010010 → 補碼表示 -46
long big = 123456789012345L;
float f = big; // 自動轉換,但 float 只有 7 位有效數字
System.out.println(f); // 1.2345679E14 精度已損失
BigDecimalif (val > Byte.MAX_VALUE) ...