我有代码片段
Integer i1 = new Integer(a);
Integer i2 = new Integer(b);
if (i1 == i2)
{
// ...
}
当'a'和'b'是小数字(例如0-20)时,i1 == i2返回true。
但是当'a'和'b'很棒时,i1 == i2重新运行假!
我不明白,怎么可能
答案 0 :(得分:1)
阅读有关整数值池的更多信息
如果'a'和'b'在-127和128之间,则i1 == i2返回true
否则i1 == i2返回false
更好的使用方法.equals比较。
if(i1.equals(i2))
{
}
答案 1 :(得分:0)
请记住,您使用的是Object而不是数据类型。 Integer有一个equals方法,定义为:
将此对象与指定对象进行比较。如果,结果是真的 并且只有当参数不为null并且是一个Integer对象时 包含与此对象相同的int值。
您通常希望使用equals方法来检查对象的相等性。
报价来自: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#equals(java.lang.Object)