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
时间: 2024-08-15 09:34:34

Integer类的parseInt和valueOf的区别的相关文章

2017.4.14 java parseInt和valueof的区别

他们返回类型的不同是最大的原因: static int parseInt(String s)           将字符串参数作为有符号的十进制整数进行分析. static Integer valueOf(int i)           返回一个表示指定的 int 值的 Integer 实例. static Integer valueOf(String s)           返回保持指定的 String 的值的 Integer 对象. 从返回值可以看出他们的区别   parseInt()返

Integer.parseInt()和valueOf()

parseInt("1")返回的是int类型,所以如果想要将一个String类型的数字串转为原始类型int ,建议使用这个方法, 而不是使用 valueOf("1"). 因为valueOf 返回的是Integer类型,调用该方法时内部也调用了parseInt 并且自动封装为Integer 类型.且通过valueOf 输出的值赋值给int 类型实际还需要Integer 自动拆箱为int类型, 通过编译后的class 我们看到实际 是该Integer 类型又调用了 in

parseInt(),parseFloat(),valueOf(),intValue(),toString方法总结

本篇文章主要讲解一下在JAVA语言中数字型字符串和数字的转换,整型数字转换成字符串,以及个别方法之间的区别. 1.parseXxx()是SimpleDateFomat里面的方法,常用的包括parseInt(),parseFloat() 使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个. 语法: 下面给出了该方法的所有的变型: static int parseInt(String s) static int parseInt(String

Java中Integer类的方法

字段摘要 static int MAX_VALUE              保持 int 类型的最大值的常量可取的值为 231-1. static int MIN_VALUE              保持 int 类型的最小值的常量可取的值为 -231. static int SIZE              以二进制补码形式表示 int 值的位数. static Class<Integer> TYPE              表示基本类型 int 的 Class 实例. 构造方法摘要

Number()、parseInt()、parseFloat()的区别

最近在一个项目中遇到:需要在前台页面用javascript去处理很数值的计算. 各种用法都有,为了统一且保证处理方式正确,特地总结了一下相关的数值转换的用法: 作用: Number():可以用于任何数据类型转换成数值: parseInt().parseFloat():专门用于把字符串转换成数值: 转换规则: Number(): 1)如果是Boolean值,true和false将分别转换为1和0. 2)如果是数字值,只是简单的传入和返回. 3)如果是null值,返回0. 4)如果是undefine

parseInt和valueOf

.parseInt和valueOf.split static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析. static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例. static Integer valueOf(String s) 返回保持指定的 String 的值的 Integer 对象. 从返回值可以看出他们的区别 parseInt()返回的是基本类型int 而valueOf()返回的是

Java中Integer类的详解与用途

java.lang 类 Integer java.lang.Object java.lang.Number java.lang.Integer 所有已实现的接口: Serializable, Comparable<Integer> public final class Integer extends Number implements Comparable<Integer> Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型

Java学习笔记24(Integer类)

这里介绍基本数据类型包装类,Integer是int的包装类, 其他的基本数据类型的包装类的方法和Integer的方法几乎一致,会一种即可全会 基本数据类型包装类的特点:用于在基本数据类型和字符串之间进行转换 这些类属于java的核心类,不需要import Integer类的方法: parseInt方法 示例: 将字符串变成基本类型 package demo; public class IntegerDemo { public static void main(String[] args) { f

【转】(String)、toString、String.valueOf的区别

在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结. 常用的方法有(String)+要转换的对象,Object.toString(),String.valueOf(Object)等. 1.(String) 这是标准的类型转换,将object转成String类型的值.使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instanceof做个类型检查,以判断是否可以转换.否则容易抛出CalssCastExcepti