重写Equals方法

来源:互联网 发布:网络渗透软件 编辑:程序博客网 时间:2024/05/01 20:54
class Cat{
    int color;
    int weight,height;
    public Cat(int c,int w,int h){
        this.color=c;
        this.height=h;
        this.weight=w;
    }
    
    public boolean equals(Object obj)
    {
        if(obj==null)
        { 
            return false; 
        }
        else
        {
            if(obj instanceof Cat)
            {
                Cat c=(Cat)obj;
                if(c.color==this.color && c.weight == this.weight && c.height==this.height)
                {
                    return true;
                }
            }
        }
        return false;
    }
    //public  String toString(){
      //  return "cat1 --> color is "+this.color;
    //}

}
public class A {
    public static void main (String [] args)
    {
        Cat cat1=new Cat(1,2,3);
        Cat cat2=new Cat(1,2,3);
        Cat cat3=new Cat(1,2,6);
        System.out.println(cat1==cat2); //表示内存要相同
        System.out.println(cat1.equals(cat2)); // 默认使用Object的equals的方法 
                                                //而在Object中equals 方法也是比较是否内存地址相同(==),
                                                //所以如果不重写equals方法,结果仍然为false
        System.out.println(cat1.equals(cat3));

        //String 类中equals方法
        String str1=new String("majianjie");
        String str2=new String("majianjie");
        System.out.println(str1==str2);         //false
        System.out.println(str1.equals(str2));  //true     因为String中已经重写了Object中的equals方法
        
        
        //toString 方法
        System.out.println(cat1);   //默认调用Object 中的toString方法  : 类名+@+hashcode
        System.out.println(cat1);      //重写Object中的toString方法
    }
}
0 0
原创粉丝点击