重头学习java(6) object类

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

原文地址:https://www.cnblogs.com/aomi/p/3131720.html