Object的equals方法和toString方法

来源:互联网 发布:兄弟连it 编辑:程序博客网 时间:2024/05/13 11:28

Object:java语言中的上帝,所有类的父类,其中定义了所有对象都具备的。
Object类是Java中唯一没有父类的类
Object类是类层次结构的根,java中所以的类从根本上都继承这个类,其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。


例子举例Object的equals方法和toString方法

class Person extends Object{    private int age;    private String name;    Person(int age,String name)    {        this.age=age;        this.name=name;    }    //定义一个方法,判断两个Person对象是否同一个人    /*     * (non-Javadoc)     * @see java.lang.Object#equals(java.lang.Object)     * 不用自定义方法,判断对象是否相同,因为Object父类中,已经定义了这样的方法     * 直接使用就好,但是判断的内容是根据Person的特点定义的     * 需要保留父类的功能声明,定义子类功能的特有内容     * 使用覆盖     */    public boolean equals(Object obj)    //Object obj=p2;-->Object obj=new Person();    {        //提高点效率,如果两个引用指向同一个对象,不用再转换并比较内容了,直接判断地址        if(this==obj)            return true;        //如果用obj.age是错误的,因为Object中没有age属性        //想要使用子类对象的特有属性必须向下转型        if(!(obj instanceof Person))            return false;        Person p=(Person)obj;        //如果判断姓名字符串是否相同,不要用==,字符串本身就是一个对象,使用String类的equals方法判断        return this.name.equals(p.name) && this.age==p.age;    }    //建立Person对象特有的字符串表现形式。只要覆盖toString方法即可    public String toString()    {        return "Person[age="+this.age+",name="+this.name+"]";    }}public class Obj {    public static void main(String[] args){        Person p1=new Person(24,"lisi");        Person p2=new Person(22,"lisi");        Person p3=new Person(24,"lisi");        System.out.println(p1.toString());        System.out.println(p1.equals(p3));        System.out.println(p1.equals(p2));//判断的是对象的内容        System.out.println(p1==p2);//判断的是对象的地址    }}

运行结果

Person[age=24,name=lisi]truefalsefalse
原创粉丝点击