Java中將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)字類型的多種方法
在Java中將字符串?dāng)?shù)字轉(zhuǎn)換為數(shù)字類型有多種方法,以下是詳細(xì)說明和示例代碼:
一、基礎(chǔ)轉(zhuǎn)換方法
- Integer.parseInt()
String str = "123"; int num = Integer.parseInt(str); // 轉(zhuǎn)換為int
- Double.parseDouble()
String str = "3.14"; double num = Double.parseDouble(str); // 轉(zhuǎn)換為double
- Long.parseLong()
String str = "9876543210"; long num = Long.parseLong(str); // 轉(zhuǎn)換為long
二、處理進(jìn)制轉(zhuǎn)換
String hexStr = "1A"; int decimal = Integer.parseInt(hexStr, 16); // 十六進(jìn)制轉(zhuǎn)十進(jìn)制 → 26 String binaryStr = "1010"; int decimal = Integer.parseInt(binaryStr, 2); // 二進(jìn)制轉(zhuǎn)十進(jìn)制 → 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("無效的數(shù)字格式: " + e.getMessage());
}
五、高級處理方案
- 使用Scanner
String str = "42.5"; Scanner scanner = new Scanner(str); double num = scanner.nextDouble(); // 自動識別數(shù)字類型
- 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); // 安全轉(zhuǎn)換,失敗返回默認(rèn)值0
}
六、特殊場景處理
- 去除空格
String str = " 123 "; int num = Integer.parseInt(str.trim());
- 處理千位分隔符
NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("1,234,567"); // → 1234567
注意事項:
- 轉(zhuǎn)換前建議使用正則表達(dá)式驗證格式
String str = "123.45";
if (str.matches("-?\\d+(\\.\\d+)?")) {
// 執(zhí)行轉(zhuǎn)換操作
}
- 超大數(shù)字處理建議使用BigInteger
String hugeNumber = "123456789012345678901234567890"; BigInteger bigInt = new BigInteger(hugeNumber);
選擇方法時的考量因素:
- 是否需要處理異常
- 數(shù)字精度要求
- 性能需求(直接解析 vs 對象轉(zhuǎn)換)
- 是否需要處理本地化格式
- 輸入數(shù)據(jù)的可靠性程度
建議根據(jù)具體場景選擇最合適的方法,對于用戶輸入等不可靠數(shù)據(jù)源,推薦使用帶異常處理的方案。
以上就是Java中將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)字類型的多種方法的詳細(xì)內(nèi)容,更多關(guān)于Java字符串?dāng)?shù)字轉(zhuǎn)換數(shù)字類型的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring boot輸入數(shù)據(jù)校驗(validation)的實(shí)現(xiàn)過程
web項目中,用戶的輸入總是被假定不安全不正確的,在被處理前需要做校驗。本文介紹在spring boot項目中實(shí)現(xiàn)數(shù)據(jù)校驗的過程,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09
關(guān)于集合與數(shù)組轉(zhuǎn)換實(shí)現(xiàn)方法
這篇文章主要介紹了關(guān)于集合與數(shù)組轉(zhuǎn)換實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
Spring?Boot的幾種統(tǒng)一處理方式梳理小結(jié)
這篇文章主要為大家介紹了Spring?Boot的幾種統(tǒng)一處理方式梳理小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Java環(huán)境徹底卸載與安裝方法教程(史上最全!)
有時候卸載Java時真的讓人很煩,明明卸載了但重新安裝Java時還報錯,下面這篇文章主要介紹了Java環(huán)境徹底卸載與安裝方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-07-07
基于Java實(shí)現(xiàn)互聯(lián)網(wǎng)實(shí)時聊天系統(tǒng)(附源碼)
Netty?是一個利用?Java?的高級網(wǎng)絡(luò)的能力,隱藏其背后的復(fù)雜性而提供一個易于使用的?API?的客戶端/服務(wù)器框架。本文將利用它實(shí)現(xiàn)互聯(lián)網(wǎng)實(shí)時聊天系統(tǒng),感興趣的可以了解一下2022-09-09

