我们平时应该都用过或者见过parseInt和valueOf这两个方法。一般我们是想把String类型的字符数字转成int类型。从这个功能层面来说,这两个方法都一样,都可以胜任这个功能。
但是,我们进入源码,看下Integer类下这两个方法
我们看parseInt()这个方法是如何实现的
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
我们再看valueOf()是如何实现的:
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
从代码,我们起码看到了两点:返回结果类型不一样,parseInt方法返回的是int基本类型,valueOf方法返回的是Integer的包装类型
valueOf方法实际上是调用了parseInt方法,也就是说,如果我们仅仅只需要得到字符串类型字符数值对应的整数数值,那我们大可不必调用valueOf,因为这样得到整形数值之后还要做一个装箱的操作,将int封装为Integer。
写代码测试效率:
public class StringDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "123";
long startTime = System.currentTimeMillis();
for(int i = 0;i<100000000;i++){
Integer.parseInt(str);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
}
和如下代码:
public class StringDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "123";
long startTime = System.currentTimeMillis();
for(int i = 0;i<100000000;i++){
Integer.valueOf(str);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
}
分别测试三遍,得到的时间如下,可以看到paraseInt()的效率更好。
| 方法 | 第一次时长 | 第二次时长 | 第三次时长 |
|---|---|---|---|
| parseInt() | 2946 | 2965 | 2952 |
| valueOf() | 3124 | 3117 | 3126 |
本文对比了parseInt与valueOf两种字符串转整数的方法,指出两者在返回类型上的不同,并通过实验测试了它们的效率,发现parseInt在性能上更胜一筹。
993

被折叠的 条评论
为什么被折叠?



