为了账号安全,请及时绑定邮箱和手机立即绑定

parseInt和valueOf的区别?

parseInt和valueOf的区别?

萧十郎 2019-03-07 14:15:41
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);        }}
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

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));

}


查看完整回答
反对 回复 2019-04-19
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

看源码:


//先调用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类型,不然还有封装拆箱,性能多少会耗费些。


查看完整回答
反对 回复 2019-04-19
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-04-19
  • 3 回答
  • 0 关注
  • 1714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信