java 中,如何高效地把数字的 String 转换为 int,主要推荐两种方式,一种是 jdk 的 Integer.parseInt,另一种是 Guava 的 Ints.tryParse。
Guava 的 Ints.tryParse
Google 的 Guava 库提供了静态方法 Ints.tryParse,当参数为非数字的字符串时,返回 null,并不会报错。
如果使用 java 1.8 及以上版本,可以借用 Optional 类来规避繁琐的 null 判断,具体示例如下:
import com.google.common.primitives.Ints;
int num = Optional.ofNullable(myString)
.map(Ints::tryParse)
.orElse(0)
当 myString 为数字字符串时,返回 int 类型的对应数字,若 myString 为 null 或者非字符串时,返回 orElse 方法指定的数字,如上示例为 0。
JDK 的 Integer.parseInt
JDK 也直接提供了静态方法 Integer.parseInt,但需要注意的是,如果待转换的字符串为非数字字符串时,会报 NumberFormatException 错误,需要通过 try catch 进行容错,具体示例如下:
int num;
try {
num = Integer.parseInt(myString);
}
catch (NumberFormatException e)
{
num = 0;
}
此外,JDK 中也有
Integer.valueOf(str)静态方法,但是它返回Integer封装类型,转换成int需要进一步转换。
valueOf方法正常情况下,返回一个java.lang.Integer的新实例或者内部缓存的实例;
parseInt方法正常情况下,返回基本类型int。