美文网首页
java中Integer.getInteger()、Intege

java中Integer.getInteger()、Intege

作者: 唐小鹏 | 来源:发表于2021-11-23 10:35 被阅读0次

    今天来说说Integer.getInteger()、Integer.valueOf()、Integer.parseInt()的区别,老生常谈了

    Integer.getInteger(String) retrun Integer
    方法假设String参数是一个系统属性数值的名称,会读取该系统属性,然后把系统属性的值转换成一个数字。当我们调用Integer.getInteger("521") 应该是得到 null(系统默认肯定没有521的系统属性)。

    Integer.valueOf():retrun Integer
    根据字符串对应的数字进行解析,返回一个integer对象。
    Integer a = Integer.valueOf("521")
    如果解析的字符串不是纯数字组成的,解析的时候会抛出异常。所以用的时候尽量try catch下。
    可以用int接收返回的结果,会自动拆箱。

    Integer.parseInt() retrun int
    根据字符串对应的数字进行解析,返回一个int对象。
    如果解析的字符串不是纯数字组成的,解析的时候会抛出异常。所以用的时候尽量try catch下。
    可以用Integer接受返回结果,返回一个Integer对象。发生自动装箱。

    总结:

    Integer.getInteger()方法比较坑,一般的话不建议采用这种方式对字符串提取数字。
    Integer.parseInt()和Integer.valueof()的区别:
    两个parseInt返回后的结果可以用==判断是否相等。Integer.valueof()返回后的结果在-128到127之间可以用==判断是
    否相等。这里的==比较直接用返回值比较的,类似于这样

    Integer.valueOf("127")==Integer.valueOf("127")    // true
    Integer.valueOf("128")==Integer.valueOf("128")    // false
    Integer.parseInt("128")==Integer.parseInt("128")  // true
    

    至于超过127之后valueOf两个返回值用==判断返回false的原因是涉及到一个Integer的自动拆箱问题

    如果非必要,不需要做漫长的装箱拆箱操作
    Integer.valueOf返回一个Integer,而不是一个int,但是projectNumber变量期望获得一个int值。Findbugs警告你,你正在做一个“漫长”的装箱拆箱操作,涉及潜在地创建一个Integer实例,多余的对象,然后通过传递这个Integer对象再拆箱获得值

    总结:要判断2个值是否相等,最好是直接使用Integer.parseInt(),也不要去拆箱装箱

    相关文章

      网友评论

          本文标题:java中Integer.getInteger()、Intege

          本文链接:https://www.haomeiwen.com/subject/iohyaltx.html