Java String 转 Long
在Java编程中,经常会遇到将字符串转换为长整型(Long)的需求。这在处理用户输入、读取配置文件等场景中特别常见。本文将详细讨论如何将一个字符串转换为长整型,涵盖Java中的几种常见解决方案以及它们的优缺点。
使用Long.parseLong方法
Java中的Long类提供了一个名为parseLong
的静态方法,可用于将字符串转换为长整型。该方法的定义如下:
public static long parseLong(String s) throws NumberFormatException
该方法接受一个字符串参数,并尝试将其解析为长整型。如果字符串表示的数字超出范围或者包含非数字字符,则会抛出NumberFormatException异常。
下面是一个简单的示例演示如何使用Long.parseLong
方法将字符串转换为长整型:
public class StringToLongExample {
public static void main(String[] args) {
String str = "123456789";
try {
long l = Long.parseLong(str);
System.out.println("String converted to long: " + l);
} catch (NumberFormatException e) {
System.out.println("Unable to convert string to long: " + e.getMessage());
}
}
}
运行上面的代码将输出:
String converted to long: 123456789
这种方法非常简单直观,适用于大多数情况。但它有一个明显的缺点,即不能处理超出Long范围的数字。如果字符串表示的数字太大,将抛出NumberFormatException异常。
使用Long.valueOf方法
除了parseLong
方法外,Long类还提供了一个名为valueOf
的静态方法,可以用于将字符串转换为Long对象。该方法的定义如下:
public static Long valueOf(String s) throws NumberFormatException
与parseLong
方法类似,valueOf
方法也会尝试将字符串解析为长整型。如果字符串表示的数字超出Long范围或包含非数字字符,则会抛出NumberFormatException异常。但与parseLong
方法不同的是,valueOf
方法返回的是一个Long对象而不是原始的long类型。
下面是一个示例演示如何使用Long.valueOf
方法将字符串转换为Long对象:
public class StringToLongExample {
public static void main(String[] args) {
String str = "9876543210";
try {
Long l = Long.valueOf(str);
System.out.println("String converted to Long object: " + l);
} catch (NumberFormatException e) {
System.out.println("Unable to convert string to Long object: " + e.getMessage());
}
}
}
运行上面的代码将输出:
String converted to Long object: 9876543210
与parseLong
方法相比,valueOf
方法的主要优点在于它返回的是一个Long对象,可以避免自动拆箱装箱带来的性能损失。但同样地,它也无法处理太大的数字。
使用Long.valueOf方法配合try-catch
为了更好地处理超出Long范围的数字,可以结合使用Long.valueOf
方法和try-catch块来实现字符串到长整型的转换。在try块中调用Long.valueOf
方法转换字符串,如果抛出NumberFormatException异常,则在catch块中捕获并进行处理。
下面是一个示例演示如何使用Long.valueOf
方法结合try-catch来处理转换失败的情况:
public class StringToLongExample {
public static void main(String[] args) {
String str = "12345678901234567890";
try {
Long l = Long.valueOf(str);
System.out.println("String converted to Long object: " + l);
} catch (NumberFormatException e) {
System.out.println("Unable to convert string to Long object: " + e.getMessage());
}
}
}
当运行上面的代码时,由于字符串表示的数字太大超出Long范围,会抛出NumberFormatException异常,并输出:
Unable to convert string to Long object: For input string: "12345678901234567890"
通过这种方式,可以更加灵活地处理转换失败的情况,从而避免程序异常终止。
使用正则表达式判断字符串是否为Long
在进行字符串到长整型转换之前,可以使用正则表达式判断字符串是否为合法的长整型表示。这样可以在转换前先进行一次验证,避免不必要的异常。
下面是一个示例演示如何使用正则表达式判断字符串是否为Long类型:
public class StringToLongExample {
public static void main(String[] args) {
String str = "1234567890";
if (str.matches("-?\\d+")) {
long l = Long.parseLong(str);
System.out.println("String converted to long: " + l);
} else {
System.out.println("Invalid input, not a long type!");
}
}
}
当输入符合长整型表示时,程序会成功转换并输出转换后的长整型数字;当输入不符合长整型表示时,程序会输出”Invalid input, not a long type!”。
通过上述方法,可以提前过滤掉非法输入,确保程序在转换前能够正常进行。
总结
本文介绍了在Java中将字符串转换为长整型的几种常见方法,包括使用Long.parseLong
方法、Long.valueOf
方法、使用Long.valueOf
方法结合try-catch以及使用正则表达式判断字符串是否为长整型。每种方法都有其适用的场景和一些注意事项,开发者可以根据实际需求选择合适的转换方式。
在进行字符串到长整型转换时,需要注意数字是否超出Long范围以及字符串是否表示一个合法的长整型数值。合理地选择转换方法并做好异常处理可以确保程序的稳定性和可靠性。