zoukankan      html  css  js  c++  java
  • Integer类的parseInt和valueOf的区别

    我们平时应该都用过或者见过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

     

  • 相关阅读:
    用Python证明“真理再前进一步就是谬误”
    senior developer in Hongkong
    Emacs 维基百科,自由的百科全书
    深入C(和C++)
    图灵等价和图灵完备
    2012年中国大陆和香港的工资收入水平市场调查报告
    图灵完备
    linux中vi进行字符替换_井底之蛙_百度空间
    they're hiring
    Linux下游戏大作赏析(三)
  • 原文地址:https://www.cnblogs.com/LoganChen/p/7252419.html
Copyright © 2011-2022 走看看