object类,是所有类的祖宗。
可以使用Object类型的变量引用任何类型的对象。
java规范要去equals具有以下特性:
1)自反性:对于任何非空引用x,x.equals(x)为true。
2)对称性:对于任何引用x和y,当且进档y.equals(x)为true时,x.equals(y)为true。
3)传递性:对于任何引用x,y,z:如果x.equals(y)为true,y.equals(z)为true,则x.equals(z)为true。
4)一致性:如果x和y引用对象没有变化,则反复调用x.equals(y)应该返回相同结果。
5)对于任何非空x,x.equals(null)返回为false。
public class welcome {
public static void main(String[] args)
{
a a1=new a();
b b1=new b();
a a2=new a();
if(b1.equals(a1))
System.out.println("b1 equals a1,equals");
else
System.out.println("b1 not equals a1,equals");
if(b1.hashCode()==a1.hashCode())
System.out.println("b1 equals a1,hashcode");
else
System.out.println("b1 not equals a1,hashcode");
if(a2.equals(a1))
System.out.println("a2 equals a1,equals");
else
System.out.println("a2 not equals a1,equals");
if(a2.hashCode()==a1.hashCode())
System.out.println("a2 equals a1,hashcode");
else
System.out.println("a2 not equals a1,hashcode");
a1=b1;
if(b1.equals(a1))
System.out.println("b1 equals a1,equals");
else
System.out.println("b1 not equals a1,equals");
if(b1.hashCode()==a1.hashCode())
System.out.println("b1 equals a1,hashcode");
else
System.out.println("b1 not equals a1,hashcode");
}
}
class a{
int i=0;
int q=0;
public void a(){
System.out.println("i+q="+(i+q));
}
}
class b extends a{
}
result is:
b1 not equals a1,equals
b1 not equals a1,hashcode
a2 not equals a1,equals
a2 not equals a1,hashcode
b1 equals a1,equals
b1 equals a1,hashcode