A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 古哥 初级黑马   /  2019-4-25 13:16  /  557 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
    }
                               

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马