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

Java Integer.parseInt 完整指南:語法、進制轉換與實戰陷阱

     編輯:Java 程式設計入門

Integer.parseInt() 是 Java 中將字符串轉為整數的核心方法,看似簡單,實則藏著進制轉換、異常處理、性能優化等實戰細節。本文系統梳理其語法重載、進制參數原理、常見異常與最佳實踐。

方法簽名與參數詳解

// 基礎版:默認十進制
public static int parseInt(String s) throws NumberFormatException

// 進制版:指定基數 (2-36)
public static int parseInt(String s, int radix) throws NumberFormatException
  • s:待解析字符串,允許正負號前綴(如 "-123"),不允許空格、下劃線、小數點。
  • radix:進制基數,範圍 Character.MIN_RADIX (2) 到 Character.MAX_RADIX (36)。超出範圍拋出 NumberFormatException。

進制轉換核心原理

radix 決定了字符串字符的「權重」。以 "12" 為例:

radix解析邏輯十進制結果
10 (默認)1×10¹ + 2×10⁰12
8 (八進制)1×8¹ + 2×8⁰10
16 (十六進制)1×16¹ + 2×16⁰18
2 (二進制)字符必須為 0/1,"12" 非法拋異常

實戰案例:Integer.parseInt("444", 16) → 4×16² + 4×16¹ + 4×16⁰ = 1092。

完整代碼示例與輸出

public class ParseIntDemo {
    public static void main(String[] args) {
        int x = Integer.parseInt("9");           // 十進制 9
        double c = Double.parseDouble("5");      // 5.0 (Double 同理)
        int b = Integer.parseInt("444", 16);     // 十六進制 444 -> 1092
        
        System.out.println(x);  // 9
        System.out.println(c);  // 5.0
        System.out.println(b);  // 1092
    }
}

高頻陷阱與避坑指南

1. NumberFormatException 異常場景

  • 字符串包含非數字字符:parseInt("12a")
  • 字符串為空或 null:parseInt("")、parseInt(null)
  • 數值超出 int 範圍(-2³¹ ~ 2³¹-1):parseInt("2147483648")
  • 進制不匹配:parseInt("9", 8)(八進制無數字 9)

2. 性能考量:避免頻繁創建對象

parseInt 返回基本類型 int,無裝箱開銷。但若誤用 new Integer(str) 或 Integer.valueOf(str) 會創建對象,高併發下增加 GC 壓力。

3. 進制字符串規範

  • 十六進制常見前綴 "0x" 或 "#" 不被識別,需手動去除:parseInt(hexStr.replace("0x", ""), 16)。
  • 負數在任意進制下均支援:parseInt("-FF", 16) → -255。

擴展:其他基本類型對應解析方法

類型方法示例
longLong.parseLong(s, radix)大數值場景
doubleDouble.parseDouble(s)無 radix 重載
floatFloat.parseFloat(s)科學計數法支援
byte/shortByte.parseByte / Short.parseShort範圍更小,溢出更易發生

最佳實踐總結

  1. 捕獲異常:解析用戶輸入或外部數據時,務必 try-catch NumberFormatException。
  2. 輸入預處理:str.trim() 去除空白,移除已知前綴(0x、0b)。
  3. 優先基本類型:用 parseXxx 而非 valueOf,避免不必要的裝箱。
  4. 進制轉換工具類:封裝通用 convertBase(str, fromRadix, toRadix) 方法,復用邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved