我有以下测试程序。我创建了3 Integer
引用。我创建了2 Integer
对象,并使引用i1和i2分别引用它们。我把参考i3等于i1。现在i1等于()i3应该显然是正确的,因为它们都指向堆上的同一个对象。但为什么i1应该等于()到i2?他们指的是两个不同的对象。我错过了什么。java的equals()方法
public boolean equals(Object obj) Indicates whether some other object is "equal to" this one.
public class Test{
public static void main(String [] args)
{
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
Integer i3 = i1;
if(i1.equals(i3)) // UNDERSTANDABLE
System.out.println("equal");
if(i1.equals(i2)) // prints equal. WHY !!!!!
System.out.println("equal");
}
}
equals是您可以读取源的方法。看看Integer.equals(),那会回答你的问题。 – 2009-12-31 19:57:16