• 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

     

  • 相关阅读:
    ES7 cat API的小结
    zabbix5.0 使用elasticsearch7.6按日期索引存储历史数据
    Archlinux爬坑指南
    ArchLinux安装常用软件QQ、TIM、微信等常用软件(三)
    ArcnLinux安装KDE桌面环境(二)
    ArchLinux安装步骤(一)
    DDD领域驱动及落地方案
    Text Classification with Keras
    Mattermost Server安装及配置AD/LADP
    使用队列问题
  • 原文地址:https://www.cnblogs.com/LoganChen/p/7252419.html
Copyright © 2020-2023  润新知