Integer.getInteger()、Integer.valueOf()、Integer.parseInt()的区别
一:三种方法的介绍
Integer.getInteger():
1:用法
是根据指定的名称得到系统属性的整数值。第一个参数将被认为是系统属性的名称。属性值字符串将被解释成一个
整数,并且以表示这个值的Integer对象形式返回。
2:注意事项
Integer.getInteger(String)方法假设String参数是一个系统属性数值的名称,会读取该系统属性,然后把系统属性的值转换
成一个数字。当我们调用Integer.getInteger("521") 应该是得到 null(系统默认肯定没有521的系统属性)。
3:常见的系统属性
在JDK文档中System类中有这样的方法getProperties()在此方法的详细介绍中有下面的参数可供使用:
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
4:手动设置系统属性
当启动JVM时,请使用System.setProperty或使用-Dname = value标志
Integer.valueOf():
1:用法
根据字符串对应的数字进行解析,返回一个integer对象。
Integer a = Integer.valueOf("521")
2:注意事项
如果解析的字符串不是纯数字组成的,解析的时候会抛出异常。所以用的时候尽量try catch下。
可以用int接收返回的结果,会自动拆箱。
Integer.parseInt():
1:用法
根据字符串对应的数字进行解析,返回一个int对象。
int a = Integer.parseInt("521")
2:注意事项
如果解析的字符串不是纯数字组成的,解析的时候会抛出异常。所以用的时候尽量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的自动拆箱问题
详情可了解我的另一篇: java整形 128陷阱
感谢博主文章: