不同的整数值

时间:2012-02-15 18:56:40

标签: java

  

可能重复:
  Why is == true for some Integer objects?

我有代码片段

Integer i1 = new Integer(a);
Integer i2 = new Integer(b);
if (i1 == i2)
{
// ...
}

当'a'和'b'是小数字(例如0-20)时,i1 == i2返回true。
 但是当'a'和'b'很棒时,i1 == i2重新运行假! 我不明白,怎么可能

2 个答案:

答案 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)