轉換分類
- 自動類型提升:容量小 → 容量大 (如
short → int → long → float → double),無需代碼干預。
- 強制類型轉換:容量大 → 容量小,需顯式造型
(targetType) value,可能損失精度或溢出。
基本類型互轉範例
short s = 0; int i = s; // 1. short → int (自動)
s = (short) i; // 2. int → short (強制,高位截斷風險)
基本類型 ↔ String 互轉
| 方向 | 方法 | 範例 |
| 基本類型 → String | String.valueOf() | String.valueOf(9.99f) → "9.99" |
| String → 基本類型 | 包裝類 parseXxx() | Integer.parseInt("10") → 10 |
// 基本類型 → String
String str = String.valueOf(99999999.99); // double
str = String.valueOf('9'); // char
// String → 基本類型 (拋 NumberFormatException 需捕獲)
int i = Integer.parseInt("10");
float f = Float.parseFloat("10.1");
long l = Long.parseLong("99999999");
double d = Double.parseDouble("99999999.9");
byte b = Byte.parseByte("0");
short sh = Short.parseShort("0");
char c = "abc".charAt(0); // 取首字符
boolean flag = Boolean.parseBoolean("true"); // 僅 "true"(忽略大小寫) 為 true
關鍵注意點
- 精度損失:
double → float → long → int → short/byte 可能截斷。
- 異常處理:
parseXxx 輸入非法拋 NumberFormatException,必須 try-catch。
Boolean.getBoolean(String) 已棄用/語義特殊 (讀系統屬性),解析字符串請用 Boolean.parseBoolean() 或 Boolean.valueOf()。
char 與 String 互轉:String.valueOf(char) / str.charAt(index)。
最佳實踐建議
- 優先使用
String.valueOf() 統一轉字符串,避免 "" + value 隱式創建 StringBuilder。
- 解析數值前先
trim() 去除空白。
- 大數值場景考慮
BigDecimal 避免浮點誤差。