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

     

  • 相关阅读:
    YII2中andWhere多个or查询
    PHP中使用date获取上月最后一天出现的问题
    使用PHP生成并导出CSV文件
    如何开启MySQL慢查询日志
    PHP使用递归按层级查找数据
    PHP设计模式之单例模式
    Yii2中多表关联查询
    剑指Offer_编程题_合并两个排序的链表
    剑指Offer_编程题_反转链表
    Java自带的性能监测工具_jstack
  • 原文地址:https://www.cnblogs.com/LoganChen/p/7252419.html
Copyright © 2011-2022 走看看