在Java中,将String转换为int有几种常用方法,以下是详细说明和示例代码:

使用 Integer.parseInt()(最常用)
适用于标准十进制整数转换,如果字符串格式不正确会抛出NumberFormatException。
String str = "123"; int num = Integer.parseInt(str); System.out.println(num); // 输出: 123
注意事项
- 字符串必须只包含数字(可带正负号 /)。
- 空字符串或非数字字符串会抛出异常:
String invalidStr = "abc"; try { int num = Integer.parseInt(invalidStr); // 抛出 NumberFormatException } catch (NumberFormatException e) { System.out.println("无法转换为整数: " + e.getMessage()); }
使用 Integer.valueOf()
与parseInt()功能类似,但返回的是Integer对象(自动装箱为基本类型int)。
String str = "456"; int num = Integer.valueOf(str); // 返回 Integer 对象,自动拆箱为 int System.out.println(num); // 输出: 456
区别
parseInt()直接返回基本类型int。valueOf()返回Integer对象(适用于需要对象类型的场景)。
处理不同进制(如二进制、十六进制)
使用 Integer.parseInt(String, int) 指定进制:
String binaryStr = "1010"; // 二进制 int num = Integer.parseInt(binaryStr, 2); // 第二个参数是进制(2-36) System.out.println(num); // 输出: 10(十进制) String hexStr = "FF"; // 十六进制 int numHex = Integer.parseInt(hexStr, 16); System.out.println(numHex); // 输出: 255
安全转换(避免异常)
如果字符串可能无效,可以用以下方式处理:

方法1:正则表达式验证
String str = "123";
if (str.matches("-?\\d+")) { // 匹配可选负号+数字
int num = Integer.parseInt(str);
System.out.println(num);
} else {
System.out.println("无效的整数格式");
}
方法2:使用 try-catch
String str = "123";
try {
int num = Integer.parseInt(str);
System.out.println(num);
} catch (NumberFormatException e) {
System.out.println("转换失败: " + str);
}
方法3:Apache Commons Lang(第三方库)
// 需要添加依赖:commons-lang3
String str = "123";
Integer num = NumberUtils.createInteger(str);
if (num != null) {
System.out.println(num);
} else {
System.out.println("转换失败");
}
从 String 中提取数字
如果字符串包含非数字字符(如 "abc123"),需先提取数字部分:
String str = "abc123";
String digits = str.replaceAll("[^0-9-]", ""); // 保留数字和负号
if (!digits.isEmpty()) {
int num = Integer.parseInt(digits);
System.out.println(num); // 输出: -123(如果原字符串有负号)
}
| 方法 | 返回类型 | 异常处理 | 适用场景 |
|---|---|---|---|
Integer.parseInt() |
int |
抛出异常 | 确保字符串格式正确时 |
Integer.valueOf() |
Integer |
抛出异常 | 需要对象类型时 |
parseInt(str, radix) |
int |
抛出异常 | 指定进制转换 |
正则/try-catch |
安全处理 | 避免异常 | 不确定字符串格式时 |
根据实际需求选择合适的方法,确保代码健壮性!

