admin管理员组

文章数量:1544739

10.6 概述

Object:Java语言中上帝,所有类的父类,其中定义了所有对象都具备的功能。

10.7 equals方法

public boolean equals(Object obj)
指示一些其他对象是否等于此。

class Person extends Object{

}
public class Test {
    public static void main(String[] args){
        Person p1 = new Person();
        Person p2 = new Person();
        System.out.println(p1.equals(p2));//false
        System.out.println(p1==p2);//false
    }

}

定义一个方法,判断两个Person对象是否是同一个。
判断依据是根据年龄。如果年龄相同,视为同一个人。

不用再自定义方法,判断对象是否相同,因为Object父类中,已经定义了这样的方法。
直接使用就可以了。但是判断的内容是根据Person的特点定义的。
需要保留父类的功能声明,定义子类特有内容。使用覆盖。

class Person extends Object{

    private int age;
    public boolean equals(Object obj){
        
        //提高一点效率,如果两个引用指向的同一个对象,不用再转换比较了,直接判断地址就可以了
        if(this==obj)
            return true;
        
        //obj.age是错误的,因为object中没有age,
        //想要使用子类的特有的属性或者方法,必须进行向下转型,需要进行类型判断
        if(!(obj instanceof Person))
            return false;
        Person p = (Person)obj;
        return  this.age == p.age;
    }
}

public class Test {
    public static void main(String[] args){
        Person p1 = new Person();
        Person p2 = new Person();
        System.out.println(p1.equals(p2));//比较年龄,输出true
        System.out.println(p1==p2);//比较地址,输出false
    }

}


例子:
定义一个方法,判断两个Person对象是否是同一个。
判断依据是根据年龄和姓名。如果年龄相同并且姓名也相同,视为同一个人。

class Person extends Object{

    private int age;
    private String name;

    public Person(int age, String name){
        this.age = age;
        this.name = name;
    }
    public boolean equals(Object obj){

        //提高一点效率,如果两个引用指向的同一个对象,不用再转换比较了,直接判断地址就可以了
        if(this==obj)
            return true;

        //obj.age是错误的,因为object中没有age,
        //想要使用子类的特有的属性或者方法,必须进行向下转型,需要进行类型判断
        if(!(obj instanceof Person))
            return false;
        Person p = (Person)obj;
        // 字符串判断不要用== , 字符串本身是一个对象,使用equals判断
        return  (this.age == p.age) && (this.name.equals(p.name));
    }
}

public class Test {
    public static void main(String[] args){
        Person p1 = new Person(19,"huanhuan");
        Person p2 = new Person(19,"huanhuan");
        System.out.println(p1.equals(p2));//比较内容,输出true
        System.out.println(p1==p2);//比较地址,输出false 
    }

}

10.8 toString方法

建立Person对象特有的字符串表现形式。只要覆盖toString方法即可。

class Person extends Object{

    private int age;
    private String name;

    public Person(int age, String name){
        this.age = age;
        this.name = name;
    }
    
    public String toString(){
        return "Person[name = "+this.name+",age = "+this.age+"]";
    }
}

public class Test {
    public static void main(String[] args){
    
        Person p1 = new Person(19,"huanhuan");
        System.out.println(p1.toString());  //输出 Person[name = huanhuan,age = 19]
    }

}

本文标签: Javaobject