黑马程序员技术交流社区

标题: 【成都校区】toString与eqauls [打印本页]

作者: 古哥    时间: 2019-4-25 13:16
标题: 【成都校区】toString与eqauls
1.toString
    重写toString的理由是什么?
        答:因为在打印某一个对象时,他需要去调用toString 方法,而如果子类不重写这个方法,默认
调用的是Object 类中的toString 方法,getClass().getName() + '@' + Integer.toHexString(hashCode())
以上这种打印的格式不是我们想看到,想看到这个对象内部的细节(成员变量值),所以我们需要重写toString()方法

2.eqauls
        为什么要重写eqauls方法
        因为在Object 类中的eqauls   
        public boolean equals(Object obj) {
        return (this == obj);
    }
        注意: == 在基本数据类型是 比较值
                                引用数据类型是 比较地址值
        如果我想要根据两个对象的内容相同时,就让其返回true ,在Object 类中的eqauls
        是为了两个对象的内容相同时 就返回true
       
        思考问题:String 属于引用数据类型 ,因为String 重写了eqauls 方法
       
        @Override
    public boolean equals(Object o) {
      
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Student student = (Student) o; //student -- s2

        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }
                               




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2