先写个程序
public class Equivalence{
public static void main(String[] args){
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println (n1 == n2);
System.out.println (n1 != n2);
}
}
根据我们预想的本例输出的结果应该是先true而后是false,因为两个Integer对象的值是相同的。不过虽然两个对象的内容相同,其references却不同,由于==和!=运算符所比较的是object references,所以实际输出的结果是false而后是true.
如果我想知道对象的内容是否相等,我们得使用equals().任何一个对象(不含哪些能够正常运用==和!=的基本型别)都拥有这个函数。以下便是其运用方式
public class Equivalence{
public static void main(String[] args){
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println (n1.equals(n2));}
}
结果如你所预期,是true.不过事情并非如此简单。比如
class Value{
int i;
}
public class EqualsMethod{
public static void main(String[] args){
Value v1 =new Value();
Value v2 =new Value();
v1.i = v2.i =100;
System.out.println(v1.equals(v2))
}
}
情况再度回到原点:输出结果是false.这是因为equals()的缺省行为是拿references来比较。所以除非你在你的class中覆写equals(),否则便得不到你想得到的行为。