首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java NumberFormatException:長整數超出 Integer 範圍的解決方案

     編輯:Java 綜合教學

Java NumberFormatException:長整數超出 Integer 範圍的解決方案

項目中將字符串轉為 Integer 時拋出 java.lang.NumberFormatException: For input string: "2222222222",經排查屬於數值溢出。

問題復現

String a = "2222222222"; // 10 位數字
Integer b = Integer.valueOf(a); // 拋出 NumberFormatException

根因分析

Java int 類型為 32 位有符號整數,取值範圍:-2,147,483,648 ~ 2,147,483,647(即 -2³¹ ~ 2³¹-1)。

輸入值 2,222,222,222 超過最大值 2,147,483,647,導致解析失敗。

解決方案:使用 BigInteger

String a = "2222222222";
BigInteger b = new BigInteger(a); // 支持任意精度整數

BigInteger 內部以數組存儲數值,無理論上限,完全解決大整數解析問題。

擴展:常見數值類型範圍對照

類型位數範圍適用場景
byte8-128 ~ 127極小數值、位運算
short16-32,768 ~ 32,767較小整數
int32-2.14億 ~ 2.14億通用整數(默認)
long64-9.22京 ~ 9.22京大整數、時間戳
BigInteger任意理論無限超大整數、加密算法

最佳實踐建議

  • 解析外部輸入(如用戶輸入、文件讀取、網絡傳輸)的整數時,優先考慮 Long 或 BigInteger,除非業務明確保證範圍在 int 內。
  • 捕獲 NumberFormatException 並給出友好提示,避免系統崩潰。
  • 若需高性能大整數運算,可考慮第三方庫(如 Apache Commons Math)或原生 long 配合溢出檢查。

記住:類型選擇要匹配業務數據範圍,預防溢出從設計階段開始。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved