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

     

  • 相关阅读:
    js 压缩 预览 上传图片
    js base64 转成图片上传
    支付宝扫码转账
    js网页 唤醒支付宝
    URL 生成带文字二维码
    iOS-语言本地化
    iOS-Storyboad动态刷新
    iOS-UITouch,UIEvent使用介绍
    JSP-标准动作标记
    JSP-注释,脚本元素,指令
  • 原文地址:https://www.cnblogs.com/LoganChen/p/7252419.html
Copyright © 2011-2022 走看看