杰瑞科技汇

Java String与int如何互相转换?

核心概念

  • String: 字符串,是一个对象,用于表示一串字符。"123"
  • int: 基本数据类型,用于存储一个 32 位的整数。123

它们一个是对象,一个是基本类型,不能直接进行数学运算或比较,因此必须进行转换。

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

Stringint

String 类型的数字字符串转换为 int 类型,主要有两种常用方法。

方法 1:使用 Integer.parseInt()

这是最直接、最常用的方法,它会尝试将一个 String 解析为 int 类型。

语法:

int number = Integer.parseInt(String str);

示例代码:

Java String与int如何互相转换?-图2
(图片来源网络,侵删)
String strNumber = "123";
int intNumber = Integer.parseInt(strNumber);
System.out.println("intNumber 的值: " + intNumber);
System.out.println("intNumber 的类型: " + ((Object)intNumber).getClass().getName()); 
// 输出: intNumber 的类型: int

⚠️ 重要:异常处理

String 不是由纯数字组成的,Integer.parseInt() 会抛出 NumberFormatException 异常,在实际开发中,必须使用 try-catch 块来处理这种潜在的错误

安全转换示例:

String input = "456";
String invalidInput = "abc123";
// 正常情况
try {
    int num1 = Integer.parseInt(input);
    System.out.println("转换成功: " + num1);
} catch (NumberFormatException e) {
    System.out.println("错误: '" + input + "' 不是有效的整数。");
}
// 异常情况
try {
    int num2 = Integer.parseInt(invalidInput);
    System.out.println("转换成功: " + num2); // 这行代码不会执行
} catch (NumberFormatException e) {
    System.out.println("错误: '" + invalidInput + "' 不是有效的整数。");
    // e.printStackTrace(); // 可以打印出详细的错误堆栈信息
}

方法 2:使用 Integer.valueOf()

这个方法也会将 String 转换为 int,但它返回的是一个 Integer 对象(int 的包装类)。

Java String与int如何互相转换?-图3
(图片来源网络,侵删)

语法:

Integer integerObject = Integer.valueOf(String str);

示例代码:

String strNumber = "789";
Integer integerObj = Integer.valueOf(strNumber);
// 如果需要得到基本类型 int,可以再调用 .intValue()
int intNumber = integerObj.intValue();
System.out.println("integerObject 的值: " + integerObj);
System.out.println("integerObject 的类型: " + integerObj.getClass().getName()); // 输出: java.lang.Integer
System.out.println("intNumber 的值: " + intNumber);
System.out.println("intNumber 的类型: " + ((Object)intNumber).getClass().getName()); // 输出: int

parseInt 的区别:

  • parseInt():直接返回基本数据类型 int
  • valueOf():返回包装类 Integer 对象。

在需要 int 类型时,通常推荐使用 Integer.parseInt(),因为它更直接,避免了额外的对象创建,但在某些需要对象引用的场景(例如泛型集合 List<Integer>),Integer.valueOf() 更合适。


intString

int 类型转换为 String 类型,有几种方法,其中最推荐的是第一种。

方法 1:使用 String.valueOf() (推荐)

这是最简洁、最高效的方法,它不会创建不必要的中间对象。

语法:

String str = String.valueOf(int number);

示例代码:

int number = 100;
String strNumber = String.valueOf(number);
System.out.println("strNumber 的值: " + strNumber);
System.out.println("strNumber 的类型: " + strNumber.getClass().getName()); // 输出: java.lang.String

方法 2:使用 Integer.toString()

这个方法通过 int 的包装类 Integer 来实现转换。

语法:

String str = Integer.toString(int number);

示例代码:

int number = 200;
String strNumber = Integer.toString(number);
System.out.println("strNumber 的值: " + strNumber);
System.out.println("strNumber 的类型: " + strNumber.getClass().getName()); // 输出: java.lang.String

方法 3:使用字符串拼接(简单但不推荐用于生产)

这是一种“取巧”的方法,通过将 int 与一个空字符串 相连,利用 Java 的自动类型转换机制得到 String

语法:

String str = "" + int number;

示例代码:

int number = 300;
String strNumber = "" + number;
System.out.println("strNumber 的值: " + strNumber);
System.out.println("strNumber 的类型: " + strNumber.getClass().getName()); // 输出: java.lang.String

为什么不推荐? 虽然这种方法代码简单,但在底层,它会先创建一个 StringBuilder 对象,然后进行拼接,对于简单的转换,性能差异不大,但在性能敏感的代码或频繁调用的场景下,String.valueOf()Integer.toString() 是更优的选择,因为它们更明确且经过高度优化。


总结与对比

转换方向 推荐方法 语法 说明
String → int Integer.parseInt() int num = Integer.parseInt("123"); 最直接,返回基本类型 int必须处理 NumberFormatException
Integer.valueOf() Integer num = Integer.valueOf("123"); 返回 Integer 对象,适用于需要对象引用的场景。
int → String String.valueOf() String str = String.valueOf(123); 最推荐,简洁高效,性能好。
Integer.toString() String str = Integer.toString(123); 同样高效,非常明确。
字符串拼接 String str = "" + 123; 简单易读,但底层有性能开销,不推荐用于生产环境。

实际应用场景示例

场景:从控制台读取用户输入的两个数字,然后计算它们的和。

import java.util.Scanner;
public class StringToIntExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第一个整数: ");
        String input1 = scanner.nextLine();
        System.out.print("请输入第二个整数: ");
        String input2 = scanner.nextLine();
        // 1. 将 String 转换为 int
        try {
            int num1 = Integer.parseInt(input1);
            int num2 = Integer.parseInt(input2);
            // 2. 进行数学计算
            int sum = num1 + num2;
            // 3. 将 int 结果转换回 String 用于输出
            String result = "计算结果是: " + String.valueOf(sum);
            System.out.println(result);
        } catch (NumberFormatException e) {
            System.out.println("输入错误:请确保输入的是有效的整数!");
        } finally {
            scanner.close(); // 关闭 Scanner,释放资源
        }
    }
}

这个例子完美地展示了 StringintintString 的完整流程,并强调了异常处理的重要性。

分享:
扫描分享到社交APP
上一篇
下一篇