开头先问一下大家,想一想下面的num值为什么
Integer num = Integer.getInteger("4");
经过测试得出,num 等于 null,没有想到在这里居然踩坑了。
薛薇看一下源码:
public static Integer getInteger(String nm) {
return getInteger(nm, null);
}
public static Integer getInteger(String nm, Integer val) {
String v = null;
try {
v = System.getProperty(nm);
} catch (IllegalArgumentException | NullPointerException e) {
}
if (v != null) {
try {
return Integer.decode(v);
} catch (NumberFormatException e) {
}
}
return val;
}
这里注意
v = System.getProperty(nm);
它的意思是,Integer.getInteger()会去找System中的配置,
eg:我们在System中设置了属性(“111”,0),此时Integer.getInteger(“111”)会返回0,如果没有进行设置属性,当然返回的是null
所以在编码的时候还是得看一眼调用方法的实现,哪怕就一眼,也会避免踩一些奇怪的坑,以后编码时还是老实用Integer.valueOf()方法取值。