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
。