转载自:http://heisetoufa.iteye.com/blog/1770914
习惯上把Integer和int类型混为一谈
所以习惯的把
Integer 的a 和 Integer 的b使用==进行了比较,结果两个值不相等
- System.out.println(a == b);//打印false
老是忘记在给Integer包装类赋值的时候,他是调用public static Integer valueOf(int i)这个方法的,而这个方法里有一个判断,当值在-128<=i<=127范围的时候,是直接用的int赋值的,如果不在这个范围的话就会new一个对象
知道原因了,就好解决了,办法有几个
- System.out.println(a.intValue() == b.intValue());
- System.out.println(String.valueOf(a.equals(b)));
- int a1 = a,b1 = b;
- System.out.println(a == b);
黑色头发:http://heisetoufa.iteye.com/