在Java中將字符串數字轉換為數字類型有多種方法,以下是詳細說明和示例代碼:
一、基礎轉換方法
- Integer.parseInt()
String str = "123";
int num = Integer.parseInt(str); // 轉換為int
- Double.parseDouble()
String str = "3.14";
double num = Double.parseDouble(str); // 轉換為double
- Long.parseLong()
String str = "9876543210";
long num = Long.parseLong(str); // 轉換為long
二、處理進制轉換
String hexStr = "1A";
int decimal = Integer.parseInt(hexStr, 16); // 十六進制轉十進制 → 26String binaryStr = "1010";
int decimal = Integer.parseInt(binaryStr, 2); // 二進制轉十進制 → 10
三、自動類型推斷(Java 8+)
String str = "42";
Integer num = Integer.valueOf(str); // 返回Integer對象
Double d = Double.valueOf("3.1415"); // 返回Double對象
四、異常處理
try {String input = "12a3";int number = Integer.parseInt(input);
} catch (NumberFormatException e) {System.out.println("無效的數字格式: " + e.getMessage());
}
五、高級處理方案
- 使用Scanner
String str = "42.5";
Scanner scanner = new Scanner(str);
double num = scanner.nextDouble(); // 自動識別數字類型
- BigDecimal處理高精度
String str = "12345678901234567890.12345";
BigDecimal bigDecimal = new BigDecimal(str);
- Apache Commons Lang
// 需要添加依賴:commons-lang3
String str = "123";
if (NumberUtils.isParsable(str)) {int num = NumberUtils.toInt(str, 0); // 安全轉換,失敗返回默認值0
}
六、特殊場景處理
- 去除空格
String str = " 123 ";
int num = Integer.parseInt(str.trim());
- 處理千位分隔符
NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("1,234,567"); // → 1234567
注意事項:
- 轉換前建議使用正則表達式驗證格式
String str = "123.45";
if (str.matches("-?\\d+(\\.\\d+)?")) {// 執行轉換操作
}
- 超大數字處理建議使用BigInteger
String hugeNumber = "123456789012345678901234567890";
BigInteger bigInt = new BigInteger(hugeNumber);
選擇方法時的考量因素:
- 是否需要處理異常
- 數字精度要求
- 性能需求(直接解析 vs 對象轉換)
- 是否需要處理本地化格式
- 輸入數據的可靠性程度
建議根據具體場景選擇最合適的方法,對于用戶輸入等不可靠數據源,推薦使用帶異常處理的方案。