java - parseInt和valueOf的区别?
ringa_lee
ringa_lee 2017-04-17 17:59:04
[Java讨论组]

public class IntegerDemo4 {

public static void main(String[] args) {
    String str = "123";
    int i = Integer.parseInt(str);

// int i = Integer.valueOf(str);

//parseInt和valueOf在这里用结果都对,但区别是什么呢?谢谢大家解答一下^_^

    System.out.println(i+1);
    
    double d = Double.parseDouble(str);
    System.out.println(d+1);
    
    
}

}

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
天蓬老师

valueOf内部就用了parseInt,区别在于parseInt直接返回原始int类型数据;而valueOf又装了下箱,返回Integer类型。

还有一个区别,parseInt期待输入是String,而valueOf不是

感受下代码:

public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}

public static Integer valueOf(String s, int radix) throws NumberFormatException {
return Integer.valueOf(parseInt(s,radix));
}

public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
PHP中文网

看源码:

//先调用parseInt获得int值,然后封装成Integer对象,注意封装的逻辑,有缓存
 public static Integer valueOf(String s) throws NumberFormatException {
        return Integer.valueOf(parseInt(s, 10));
 }
    
 public static Integer valueOf(int i) {
    assert IntegerCache.high >= 127;
 if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
 }
 //直接转换,获得int值
 public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s,10);
 }

综上所述,一般用Integer.parseInt(str),除非你要返回Integer类型,不然还有封装拆箱,性能多少会耗费些。

天蓬老师

parseint直接返回int。valueof会做封装

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号