java 中基本数据类型与字符串的互相转换主要依赖包装类的静态方法和实例方法。将基本类型转为字符串,推荐使用 `string.valueof()` 或包装类的 `tostring()`;将字符串转回基本类型,则需调用对应包装类的 `parsexxx()` 静态方法。这些方法能处理常见的格式转换,但在反向转换时若字符串格式不合法会抛出异常。

如何将 int 转换为 String
将 `int` 转换为 `String` 最稳妥的方式是使用 `String.valueOf(int)`,它内部调用了 `Integer.toString()`,且对 null 安全(虽然基本类型无 null)。也可以使用 `Integer.toString(int)` 直接获取字符串表示。这两种方式在性能上差异极小,但 `valueOf` 更通用,适用于所有基本类型。

public class IntToString {
public static void main(String[] args) {
int num = 123;
// 方法一:使用 String.valueOf
String str1 = String.valueOf(num);
System.out.println("str1: " + str1);
// 方法二:使用 Integer.toString
String str2 = Integer.toString(num);
System.out.println("str2: " + str2);
// 验证结果
System.out.println("Type of str1: " + str1.getClass().getName());
}
}
运行上述代码,预期输出为:
str1: 123
str2: 123
Type of str1: java.lang.String
如何将 String 转换为 int
将 `String` 转换为 `int` 必须使用 `Integer.parseInt(String)`。该方法解析字符串中的十进制整数。如果字符串包含非数字字符、为空或超出 `int` 范围,将抛出 `NumberFormatException`。注意不要使用 `Integer.valueOf(String)` 再自动拆箱,虽然也能工作,但 `parseInt` 语义更明确且避免创建不必要的 Integer 对象。

public class StringToInt {
public static void main(String[] args) {
String str = "456";
try {
int num = Integer.parseInt(str);
System.out.println("num: " + num);
System.out.println("Type of num: " + (num instanceof Integer ? "Wrapper" : "Primitive"));
} catch (NumberFormatException e) {
System.out.println("Invalid format: " + e.getMessage());
}
// 测试非法输入
try {
Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("Caught exception for 'abc'");
}
}
}
运行上述代码,预期输出为:
num: 456
Type of num: Primitive
Caught exception for 'abc'
当字符串包含前导零或负号时转换行为如何
当字符串包含前导零(如 "007")或负号(如 "-123")时,`Integer.parseInt()` 仍能正确解析为对应的十进制整数值。前导零不会导致八进制解释,除非显式指定基数。负号会被正常识别为负数。若使用 `String.format()` 或 `+` 拼接进行正向转换,前导零和负号也会原样保留在字符串中。因此,双向转换在这些边界条件下是保持一致的,前提是字符串格式符合整数规范。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











