String 转 int (将字符串形式的数字转换为整数)
这是将一个看起来像数字的字符串("123")转换成一个真正的 int 类型变量(123)。

使用 Integer.parseInt() (最常用、最标准)
这是最直接、最常用的方法,它会尝试将字符串解析为一个有符号的十进制整数。
语法:
int number = Integer.parseInt(String str);
示例:
String strNumber = "123"; int intNumber = Integer.parseInt(strNumber); System.out.println(intNumber); // 输出: 123 System.out.println(intNumber + 10); // 输出: 133 (可以正常进行数学运算)
⚠️ 重要注意事项:

-
格式错误: 如果字符串不是有效的整数格式,
Integer.parseInt()会抛出NumberFormatException异常。- 包含非数字字符:
"12a3","abc" - 包含空格:
" 123"(开头或结尾的空格也会导致异常) - 为空或 null:
null或 (空字符串) - 超出范围: 如果数字太大或太小,超出了
int类型的范围(-2,147,483,648 到 2,147,483,647),也会抛出异常。
示例 (异常情况):
try { // 会抛出 NumberFormatException int num1 = Integer.parseInt("12a3"); } catch (NumberFormatException e) { System.out.println("无法将 '12a3' 转换为整数: " + e.getMessage()); } try { // 会抛出 NumberFormatException int num2 = Integer.parseInt(" 123"); } catch (NumberFormatException e) { System.out.println("无法将 ' 123' 转换为整数: " + e.getMessage()); } try { // 会抛出 NumberFormatException int num3 = Integer.parseInt(""); } catch (NumberFormatException e) { System.out.println("无法将 '' 转换为整数: " + e.getMessage()); } - 包含非数字字符:
使用 Integer.valueOf()
这个方法也可以将字符串转换为 int,但它返回的是 Integer 对象(int 的包装类),而不是基本类型 int,这个过程叫做“装箱”。
语法:

Integer integerObject = Integer.valueOf(String str); // 如果需要基本类型,再进行拆箱 int number = integerObject;
示例:
String strNumber = "456"; // 返回一个 Integer 对象 Integer intObject = Integer.valueOf(strNumber); // 从 Integer 对象中获取 int 值 (自动拆箱) int intNumber = intObject; System.out.println(intNumber); // 输出: 456
与 parseInt 的区别:
parseInt: 直接返回int基本类型。valueOf: 返回Integer对象。- 在现代 Java(Java 5+)中,由于“自动装箱/拆箱”机制,两者在使用上差别不大。
valueOf在某些情况下(尤其是在循环中频繁创建对象时)可能对性能有微小影响,因为会创建新的Integer对象,但对于大多数场景,parseInt是更清晰的选择。
最佳实践:使用 try-catch 处理异常
当处理来自用户输入或外部数据的字符串时,永远不要直接调用 parseInt 而不进行异常处理,除非你 100% 确保字符串的格式是正确的。
public static String convertStringToInt(String str) {
try {
int number = Integer.parseInt(str);
return "转换成功: " + number;
} catch (NumberFormatException e) {
return "转换失败: '" + str + "' 不是有效的整数格式。";
}
}
public static void main(String[] args) {
System.out.println(convertStringToInt("789")); // 输出: 转换成功: 789
System.out.println(convertStringToInt("abc")); // 输出: 转换失败: 'abc' 不是有效的整数格式。
System.out.println(convertStringToInt(" 100")); // 输出: 转换失败: ' 100' 不是有效的整数格式。
}
int 转 String (将整数转换为字符串形式)
这是将一个 int 变量转换成一个可以显示或拼接的字符串。
使用 String.valueOf() (推荐)
这是最简单、最高效的方法,它接受一个 int 参数并将其转换为 String。
语法:
String str = String.valueOf(int number);
示例:
int number = 123; String strNumber = String.valueOf(number); System.out.println(strNumber); // 输出: "123" System.out.println(strNumber + 10); // 输出: "12310" (字符串拼接)
使用 Integer.toString()
这个方法直接从 Integer 类调用,功能与 String.valueOf() 非常相似,也非常常用。
语法:
String str = Integer.toString(int number);
示例:
int number = 456; String strNumber = Integer.toString(number); System.out.println(strNumber); // 输出: "456"
使用空字符串拼接 (简单但不够优雅)
这是最“取巧”的方法,利用了 Java 的类型转换特性,任何类型与字符串 相加,结果都会被转换为字符串。
语法:
String str = "" + int number;
示例:
int number = 789; String strNumber = "" + number; System.out.println(strNumber); // 输出: "789"
为什么不推荐这种方法?
虽然它很简单,但在某些复杂的场景下可能会引起混淆,并且性能上通常不如 String.valueOf() 或 Integer.toString(),因为它会创建一个临时的 StringBuilder 对象,在性能要求极高的代码中,应避免使用。
使用 String.format()
当你需要将数字格式化为特定格式的字符串时(补零、添加千位分隔符等),String.format() 是最佳选择。
语法:
String str = String.format(String format, Object... args);
示例:
int number = 99;
// %d 是整数占位符, 04 表示总宽度为4,不足部分用0补齐
String formattedStr = String.format("%04d", number);
System.out.println(formattedStr); // 输出: "0099"
int largeNumber = 1000000;
// , 表示添加千位分隔符
String formattedStr2 = String.format(%,d", largeNumber);
System.out.println(formattedStr2); // 输出: "1,000,000"
总结与对比
| 转换方向 | 推荐方法 | 语法 | 说明 |
|---|---|---|---|
| String -> int | Integer.parseInt() |
int num = Integer.parseInt(str); |
最常用,直接返回基本类型,必须处理 NumberFormatException。 |
Integer.valueOf() |
Integer obj = Integer.valueOf(str); |
返回 Integer 对象,有自动装箱/拆箱,也可用。 |
|
| int -> String | String.valueOf() |
String str = String.valueOf(num); |
最推荐,清晰、高效。 |
Integer.toString() |
String str = Integer.toString(num); |
同样高效,与 valueOf 一样优秀。 |
|
| 空字符串拼接 | String str = "" + num; |
简单易记,但性能和可读性稍差,不推荐在性能关键代码中使用。 | |
String.format() |
String str = String.format("%d", num); |
用于格式化输出,功能强大。 |
完整示例代码
public class StringIntConversion {
public static void main(String[] args) {
// ================== String 转 int ==================
System.out.println("--- String 转 int ---");
String strNum = "2025";
String invalidStr = "20a3";
// 1. 使用 Integer.parseInt()
try {
int num1 = Integer.parseInt(strNum);
System.out.println("parseInt 成功: " + num1);
} catch (NumberFormatException e) {
System.out.println("parseInt 失败: " + e.getMessage());
}
// 2. 使用 Integer.valueOf()
try {
Integer num2Obj = Integer.valueOf(strNum);
int num2 = num2Obj; // 自动拆箱
System.out.println("valueOf 成功: " + num2);
} catch (NumberFormatException e) {
System.out.println("valueOf 失败: " + e.getMessage());
}
// 3. 错误处理示例
System.out.println("尝试转换无效字符串 '" + invalidStr + "':");
try {
Integer.parseInt(invalidStr);
} catch (NumberFormatException e) {
System.out.println("捕获到预期异常: " + e.getMessage());
}
System.out.println("\n================== int 转 String ==================");
// ================== int 转 String ==================
int number = 2025;
// 1. 使用 String.valueOf() (推荐)
String str1 = String.valueOf(number);
System.out.println("String.valueOf(): " + str1);
// 2. 使用 Integer.toString()
String str2 = Integer.toString(number);
System.out.println("Integer.toString(): " + str2);
// 3. 使用空字符串拼接 (不推荐)
String str3 = "" + number;
System.out.println("空字符串拼接: " + str3);
// 4. 使用 String.format() (用于格式化)
String str4 = String.format("%05d", number); // 格式化为5位,不足补0
System.out.println("String.format(): " + str4);
}
}
输出结果:
--- String 转 int ---
parseInt 成功: 2025
valueOf 成功: 2025
尝试转换无效字符串 '20a3':
捕获到预期异常: For input string: "20a3"
================== int 转 String ==================
String.valueOf(): 2025
Integer.toString(): 2025
空字符串拼接: 2025
String.format(): 02025 