public static int parseInt(String s) // 默認十進制
public static int parseInt(String s, int radix) // 指定進制 (2-36)
s:數字字符串,可選正負號(+/-),不可含空格或非數字字符。radix:進制基數,範圍 Character.MIN_RADIX (2) 到 Character.MAX_RADIX (36)。超出拋 NumberFormatException。| 代碼 | 說明 | 結果 |
|---|---|---|
Integer.parseInt("9") | 十進制 | 9 |
Integer.parseInt("444", 16) | 十六進制 0x444 | 1092 |
Integer.parseInt("1010", 2) | 二進制 | 10 |
Integer.parseInt("-FF", 16) | 負十六進制 | -255 |
Integer.parseInt("zz", 36) | 36 進制 (z=35) | 1295 |
public class ParseIntDemo {
public static void main(String[] args) {
String[] tests = {"9", "444", "1010", "-FF", "zz", " 123", "12a3"};
int[] radices = {10, 16, 2, 16, 36, 10, 10};
for (int i = 0; i < tests.length; i++) {
try {
int val = Integer.parseInt(tests[i], radices[i]);
System.out.printf("parseInt(\"%s\", %d) = %d%n", tests[i], radices[i], val);
} catch (NumberFormatException e) {
System.out.printf("parseInt(\"%s\", %d) -> NumberFormatException: %s%n",
tests[i], radices[i], e.getMessage());
}
}
}
}
parseInt("9", 10) = 9
parseInt("444", 16) = 1092
parseInt("1010", 2) = 10
parseInt("-FF", 16) = -255
parseInt("zz", 36) = 1295
parseInt(" 123", 10) -> NumberFormatException: For input string: " 123"
parseInt("12a3", 10) -> NumberFormatException: For input string: "12a3"
" 123" 會拋異常,需先 s.trim()。"0xFF"、"0b1010" 均不可直接解析,需手動去前綴或用 Integer.decode("0xFF")。int 範圍(-231 ~ 231-1)拋 NumberFormatException。大數值用 Long.parseLong 或 BigInteger。Integer.valueOf(String):返回 Integer 對象,內部緩存 -128~127,建議優先使用。Integer.decode(String):支援 0x/0X (十六進制)、0 (八進制)、# (十六進制) 前綴。Long.parseLong、Double.parseDouble 等同理。Integer.parseInt 是字符串轉整數的基石方法,掌握指定進制、異常捕獲、去空白/前綴預處理 是避免運行時錯誤的關鍵。