我在开发过程中处理人员id筛选,从数据库中查询到人员id转int类型,我用了Integer.valueOf(),筛选过程中使用了如果某一个人员id相等就排除,结果我排除不掉;通过打印日志知道Integer.valueOf("216")与Integer.valueOf("216")是不相等的。自己写了一个测试:
public static void main(String[] args) throws Exception {
String aa = "128";
String bb = "128";
if (Integer.valueOf(aa) == Integer.valueOf(bb)) {
System.out.println("---valueOf:相等---");
} else {
System.out.println("---valueOf:不相等---");
}
if (Integer.valueOf(aa).intValue() == Integer.valueOf(bb).intValue()) {
System.out.println("---intValue:相等---");
} else {
System.out.println("---intValue:不相等---");
}
if (Integer.parseInt(aa) == Integer.parseInt(bb)) {
System.out.println("---parseInt:相等---");
} else {
System.out.println("---parseInt:不相等---");
}
}
打印结果:
---valueOf:不相等---
---intValue:相等---
---parseInt:相等---
原因网上都有详细说明,至于Integer.valueOf();有什么使用场景非用不可我也没有调研,但是对我来说应该尽量使用Integer.parseInt();