在 Java 中,将 String 类型转换为 int 类型主要有以下几种方法,我会为你详细介绍每种方法的用法、示例代码以及注意事项。

使用 Integer.parseInt()
这是最常用、最直接的方法,它将 String 解析为 int 基本数据类型。
方法签名
public static int parseInt(String s) throws NumberFormatException
示例代码
public class StringToIntExample {
public static void main(String[] args) {
String strNumber = "12345";
try {
int number = Integer.parseInt(strNumber);
System.out.println("转换后的 int 值: " + number);
System.out.println(number + 100); // 可以进行数学运算
} catch (NumberFormatException e) {
System.err.println("无法将字符串转换为整数: " + e.getMessage());
}
}
}
输出
转换后的 int 值: 12345
12445
注意事项
- 如果字符串不是有效的整数表示(例如包含非数字字符、为空或超出
int范围),会抛出NumberFormatException。 - 字符串可以包含可选的 或 符号表示正负数。
使用 Integer.valueOf()
这个方法返回 Integer 对象(int 的包装类),而不是 int 基本类型,如果需要基本类型,可以进一步拆箱(unboxing)。
方法签名
public static Integer valueOf(String s) throws NumberFormatException
示例代码
public class StringToIntExample {
public static void main(String[] args) {
String strNumber = "67890";
try {
Integer integerObj = Integer.valueOf(strNumber);
int number = integerObj; // 自动拆箱(unboxing)
System.out.println("转换后的 Integer 对象: " + integerObj);
System.out.println("转换后的 int 值: " + number);
} catch (NumberFormatException e) {
System.err.println("无法将字符串转换为整数: " + e.getMessage());
}
}
}
输出
转换后的 Integer 对象: 67890
转换后的 int 值: 67890
注意事项
- 与
parseInt()类似,如果字符串无效,会抛出NumberFormatException。 - 返回的是
Integer对象,适用于需要对象类型(例如泛型集合)的场景。
处理异常情况(空字符串或非数字)
如果字符串可能为空或包含非数字字符,建议使用 try-catch 块捕获 NumberFormatException。
示例代码
public class StringToIntExample {
public static void main(String[] args) {
String[] testCases = {"123", "-456", "abc", "", "2147483648"}; // 最后一个超出 int 范围
for (String str : testCases) {
try {
int number = Integer.parseInt(str);
System.out.println("成功转换: " + str + " -> " + number);
} catch (NumberFormatException e) {
System.out.println("转换失败: " + str + " -> " + e.getMessage());
}
}
}
}
输出
成功转换: 123 -> 123
成功转换: -456 -> -456
转换失败: abc -> For input string: "abc"
转换失败: -> For input string: ""
转换失败: 2147483648 -> For input string: "2147483648"
处理带空格的字符串
如果字符串前后有空格,可以使用 String.trim() 方法去除空格后再转换。

示例代码
public class StringToIntExample {
public static void main(String[] args) {
String strWithSpaces = " 987 ";
try {
int number = Integer.parseInt(strWithSpaces.trim());
System.out.println("转换后的 int 值: " + number);
} catch (NumberFormatException e) {
System.err.println("转换失败: " + e.getMessage());
}
}
}
输出
转换后的 int 值: 987
处理非十进制字符串(如十六进制)
如果字符串是十六进制(以 0x 或 0X 开头),可以使用 Integer.parseInt() 的重载方法,指定进制。
示例代码
public class StringToIntExample {
public static void main(String[] args) {
String hexString = "1A3F"; // 十六进制
try {
int number = Integer.parseInt(hexString, 16); // 16 表示十六进制
System.out.println("转换后的十进制值: " + number); // 6719
} catch (NumberFormatException e) {
System.err.println("转换失败: " + e.getMessage());
}
}
}
输出
转换后的十进制值: 6719
| 方法 | 返回类型 | 是否抛出异常 | 适用场景 |
|---|---|---|---|
Integer.parseInt() |
int(基本类型) |
是(NumberFormatException) |
需要基本类型 int |
Integer.valueOf() |
Integer(包装类) |
是(NumberFormatException) |
需要对象类型(如泛型) |
try-catch |
处理无效输入 |
推荐做法
- 如果确定字符串是有效的整数,直接使用
Integer.parseInt()。 - 如果可能无效,用
try-catch处理异常。 - 如果需要对象类型(如
List<Integer>),使用Integer.valueOf()。
希望这些方法能帮助你顺利实现 String 到 int 的转换!如果有其他问题,欢迎继续提问。

