杰瑞科技汇

Java String如何转int?

使用 Integer.parseInt() (最常用、最标准)

这是最直接、最常用的方法,它属于 Java 的包装类 java.lang.Integer 中的静态方法。

Java String如何转int?-图1
(图片来源网络,侵删)

语法

int intValue = Integer.parseInt(String str);

示例代码

public class StringToIntExample {
    public static void main(String[] args) {
        String strNumber = "12345";
        // 将 String 转换为 int
        int number = Integer.parseInt(strNumber);
        System.out.println("转换后的整数: " + number);
        System.out.println("类型: " + ((Object)number).getClass().getName()); // 检查类型
        // 也可以直接用于计算
        int result = number + 100;
        System.out.println("计算结果: " + result); // 输出 12445
    }
}

使用 Integer.valueOf() (同样常用)

这个方法也来自 java.lang.Integer 类,它返回的是一个 Integer 对象(即 int 的包装类型),而不是原始的 int 类型,但在很多情况下(比如赋值给 int 变量时),Java 会自动进行“拆箱”(unboxing),所以用起来和 parseInt 非常相似。

语法

Integer integerObject = Integer.valueOf(String str);
// 如果需要原始 int 类型
int intValue = integerObject; // 自动拆箱
// 或者
int intValue = Integer.valueOf(String str); // 直接赋值,编译器会自动拆箱

示例代码

public class StringToIntValueOfExample {
    public static void main(String[] args) {
        String strNumber = "9876";
        // Integer.valueOf() 返回一个 Integer 对象
        Integer integerObject = Integer.valueOf(strNumber);
        System.out.println("Integer 对象: " + integerObject);
        System.out.println("对象类型: " + integerObject.getClass().getName());
        // 自动拆箱为 int
        int number = integerObject;
        System.out.println("拆箱后的整数: " + number);
        System.out.println("类型: " + ((Object)number).getClass().getName());
        // 也可以直接一步到位
        int anotherNumber = Integer.valueOf("5432");
        System.out.println("直接转换的整数: " + anotherNumber);
    }
}

⚠️ 重要:处理异常 (非常关键)

String 中包含非数字字符("12a3"),或者是一个空字符串 ,或者超出了 int 类型的表示范围(Integer.MIN_VALUEInteger.MAX_VALUE),上述两个方法都会抛出 NumberFormatException 异常,在实际开发中,你必须使用 try-catch 语句来处理这种潜在的错误。

示例:处理异常

public class StringToIntWithExceptionHandling {
    public static void main(String[] args) {
        String[] testStrings = {"123", "-456", "12a3", "", "2147483648"}; // 最后一个数超过了int的最大值
        for (String str : testStrings) {
            try {
                int number = Integer.parseInt(str);
                System.out.println("成功转换 '" + str + "' -> " + number);
            } catch (NumberFormatException e) {
                System.out.println("转换失败: '" + str + "' 不是有效的整数。");
                // e.printStackTrace(); // 打印详细的错误堆栈信息(调试时用)
            }
        }
    }
}

输出结果:

成功转换 '123' -> 123
成功转换 '-456' -> -456
转换失败: '12a3' 不是有效的整数。
转换失败: '' 不是有效的整数。
转换失败: '2147483648' 不是有效的整数。

使用 new Integer(String str) (已过时)

这是一种通过构造函数来创建 Integer 对象的方式。

Java String如何转int?-图2
(图片来源网络,侵删)

⚠️ 重要:这种方法在 Java 9 中被标记为过时(deprecated),并且在 Java 9 之后被移除了。 强烈不推荐在新代码中使用它。

为什么被移除?

new Integer(str) 内部实际上也是调用了 Integer.parseInt(str),创建一个不必要的对象会增加内存开销和垃圾回收的压力,而 Integer.valueOf() 在 Java 5 引入了“自动装箱/拆箱”和“缓存机制”(-128到127之间的数值会被缓存),性能更好。

不推荐的示例 (仅作了解)

// 不要在 Java 9+ 的代码中使用这种方式
// Integer num = new Integer("123"); // 编译器会警告

总结与对比

方法 返回类型 是否抛出异常 推荐度 备注
Integer.parseInt() int (原始类型) ⭐⭐⭐⭐⭐ 最常用,当你明确需要一个原始的 int 类型时,首选此方法。
Integer.valueOf() Integer (对象类型) ⭐⭐⭐⭐⭐ 非常常用,当你需要一个 Integer 对象时使用,或需要利用其缓存机制时。
new Integer() Integer (对象类型) ⭐☆☆☆☆ 已过时,性能较差,应避免使用。

最佳实践

  1. 首选 Integer.parseInt():如果你的目标就是得到一个 int 基本类型变量,这是最清晰、最直接的选择。
  2. 必须处理异常:永远不要假设输入的 String 是一个有效的数字,总是将 parseIntvalueOf 放在 try-catch 块中,以防止程序因 NumberFormatException 而崩溃。
  3. 理解 parseIntvalueOf 的区别parseInt 直接返回原始类型,valueOf 返回对象,在需要对象集合(如 List<Integer>)时,valueOf 更合适,在简单赋值时,两者效果几乎一样。
Java String如何转int?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇