在 Java 中,将 String 类型转换为 int 类型有多种方法,以下是几种常见的方式及其详细说明:

使用 Integer.parseInt()(最常用)
这是最直接和常用的方法,适用于将纯数字字符串转换为 int。
语法
int num = Integer.parseInt(String str);
示例
String str = "123"; int num = Integer.parseInt(str); System.out.println(num); // 输出: 123
注意事项
- 格式错误:如果字符串不是有效的数字格式(如
"abc"或"12a3"),会抛出NumberFormatException。String invalidStr = "abc"; int num = Integer.parseInt(invalidStr); // 抛出 NumberFormatException
- 空字符串:空字符串 也会抛出
NumberFormatException。 - 超出范围:如果字符串表示的数字超出
int的范围(如2147483648),会抛出NumberFormatException(因为int的最大值是2147483647)。
使用 Integer.valueOf()
Integer.valueOf() 返回的是 Integer 对象(自动拆箱为 int),功能与 parseInt() 类似,但返回的是包装类型。
语法
int num = Integer.valueOf(String str);
示例
String str = "456"; int num = Integer.valueOf(str); System.out.println(num); // 输出: 456
区别
parseInt()直接返回基本类型int。valueOf()返回Integer对象(会自动拆箱为int)。
使用 Integer.decode()
Integer.decode() 可以解析带有进制前缀(如 0x 十六进制、0 八进制)的字符串。
语法
int num = Integer.decode(String str);
示例
String hexStr = "0xFF"; // 十六进制 int num = Integer.decode(hexStr); System.out.println(num); // 输出: 255 String octStr = "010"; // 八进制 int num = Integer.decode(octStr); System.out.println(num); // 输出: 8
使用 NumberFormat 或 Scanner(更灵活)
如果需要处理更复杂的数字格式(如千位分隔符 "1,000"),可以使用 NumberFormat 或 Scanner。

示例(NumberFormat)
import java.text.NumberFormat; String str = "1,000"; NumberFormat format = NumberFormat.getInstance(); int num = format.parse(str).intValue(); System.out.println(num); // 输出: 1000
示例(Scanner)
import java.util.Scanner; String str = "42"; Scanner scanner = new Scanner(str); int num = scanner.nextInt(); scanner.close(); System.out.println(num); // 输出: 42
手动转换(不推荐)
如果字符串可能包含非数字字符,可以手动检查并转换:
示例
String str = "123abc";
int num = 0;
try {
num = Integer.parseInt(str.replaceAll("[^0-9]", ""));
} catch (NumberFormatException e) {
System.err.println("无法转换为数字");
}
System.out.println(num); // 输出: 123(如果字符串是 "123abc")
| 方法 | 返回类型 | 特点 |
|---|---|---|
Integer.parseInt() |
int |
最常用,直接转换 |
Integer.valueOf() |
Integer(自动拆箱) |
返回包装类型 |
Integer.decode() |
int |
支持进制前缀(如 0x) |
NumberFormat / Scanner |
int |
支持复杂格式(如 "1,000") |
推荐选择
- 如果字符串是纯数字,优先使用
Integer.parseInt()。 - 如果需要处理进制前缀,使用
Integer.decode()。 - 如果字符串可能包含千位分隔符等复杂格式,使用
NumberFormat或Scanner。
希望这些方法能帮助你完成 String 到 int 的转换!如果有更具体的需求,可以进一步讨论。

