Integer n1 = new Integer( 47 );
Integer n2 = new Integer( 47 );
System.out.println(n1 == n2); //结果为false
System.out.println(n1 != n2); //结果为true
因为==与!=都是比较对象的句柄,n1和n2尽管Integer对象相同,对象内容相同,但是句柄不同
2 . equals()的使用
Integer n1 = new Integer( 47 );
Integer n2 = new Integer( 47 );
System.out.println(n1.equals(n2)); //ture
equals比较的是对象内容,所以为ture;
class Value {
int i;
}
public class EqualsMethod2 {
public static void main(String[] args) {
Value n1 = new Value();
Value n2 = new Value();
n1.i = n2.i = 10 ;
System.out.println(n1.equals(n2)); //false
}
}
此时的结果又变回了 false !这是由于 equals()的默认行为是比较句柄。所以除非在自己的新类中改变了
equals(),否则不可能表现出我们希望的行为。
|