返回

Java 中将 String 转换为 long 的指南:两种常用方法比较

java

将 Java 中的 String 转换为 long 的指南

在 Java 中,将 String 转换为 long 是一种常见的任务,用于处理和转换数字数据。本文将深入探讨两种最常用的方法:使用 Long.parseLong() 方法和 Long.valueOf() 方法。

使用 Long.parseLong() 方法

解析 String 为 long

最简单直接的方法是使用 Long.parseLong() 方法,它接受一个 String 参数并返回一个原始 long 值。此方法使用内部解析器,将 String 中的数字字符转换为 long,而无需创建中间对象。

String str = "12345";
long num = Long.parseLong(str);
System.out.println(num); // 输出:12345

使用 Long.valueOf() 方法

解析 String 为 Long 对象

Long.valueOf() 方法提供了另一种选择,它接受一个 String 参数并返回一个 Long 对象。此方法不会直接解析 String,而是将 String 转换为 Long 对象,该对象可以进一步转换为原始 long 值。

String str = "67890";
Long num = Long.valueOf(str);
long primitiveNum = num.longValue();
System.out.println(primitiveNum); // 输出:67890

选择合适的转换方法

在选择转换方法时,考虑以下因素:

  • 需要原始 long 值: 如果只需要原始 long 值,则 Long.parseLong() 方法更加简洁高效。
  • 保留原始 String 表示形式: 如果需要保留原始 String 表示形式,则 Long.valueOf() 方法更合适,因为它返回一个 Long 对象,该对象可以稍后用于获取原始字符串值。

真实世界示例

考虑从用户输入中读取一个 long 值的场景。你可以使用 Long.parseLong() 方法直接将输入 String 转换为 long:

Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个长整型数字:");
String input = scanner.nextLine();
long number = Long.parseLong(input);

或者,你可以使用 Long.valueOf() 方法先将输入 String 转换为 Long 对象,然后再获取原始 long 值:

Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个长整型数字:");
String input = scanner.nextLine();
Long numberObj = Long.valueOf(input);
long number = numberObj.longValue();

常见问题解答

1. 为什么 Long.parseLong() 方法抛出 NumberFormatException?
如果输入 String 不是有效的 long 值,Long.parseLong() 方法会抛出 NumberFormatException

2. Long.parseLong()Long.valueOf() 方法之间的区别是什么?
Long.parseLong() 直接解析 String 为 long 值,而 Long.valueOf() 先将 String 解析为 Long 对象。

3. 我应该始终使用 Long.parseLong() 方法吗?
如果只需要原始 long 值,Long.parseLong() 方法更有效。但是,如果需要保留原始 String 表示形式,Long.valueOf() 方法更合适。

4. Java 中还有其他将 String 转换为 long 的方法吗?
除了这里讨论的两种方法之外,还有其他方法,例如使用 BigInteger 和自定义解析器。

5. 将 String 转换为 long 的最佳实践是什么?
在转换 String 之前,始终检查其有效性。考虑使用 try-catch 块来处理潜在的 NumberFormatException。