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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 妖妖 中级黑马   /  2015-3-29 10:15  /  1476 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public boolean equals(Object obj)
        {
                if (!obj instanceof Person)
                {
                        return false;
                }
                Person p=(Person)obj;
                return this.name.equals(p.name)&&this.age==p.age;
        }
return this.name.equals(p.name)&&this.age==p.age;没有明白是什么意思,请大神详细讲解,谢谢啦

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

16 个回复

正序浏览
return this.name.equals(p.name)&&this.age==p.age
里面的this表示引用该方法的对象,那this.age和p.age究竟是哪两个对象的比较?
回复 使用道具 举报
return  结果;
回复 使用道具 举报
return是返回函数值
回复 使用道具 举报
意思就是 name和name比较的结果(真或假)与上age和age的比较结果;
回复 使用道具 举报
this.name.equals(p.name)  &&   this.age==p.age;
逻辑运算符&& 和 比较运算符==的使用。
equals方法是重写了Object类中的方法,Person中这个方法是用来比较两个对象的名字,名字是String类型的,是对象,调用equals方法。而age年龄是int型的,是基本数据类型,直接使用比较运算符==比较。
回复 使用道具 举报
return this.name.equals(p.name)&&this.age==p.age;这里面的这个equals是调用的String类的equals()方法,你查下API里,就知道String复写了equals()方法的,它返回值也是boolean类型的,相同返回true。后面==表达式返回的也是个boolean类型的,所以用&&相连后返回也是boolean类型的。
所以这里就是比较名字要相同,同时年龄要相等时返回ture。
回复 使用道具 举报
Grady 中级黑马 2015-3-30 00:11:54
11#
{一个是String类--引用类型,但是重写了equals方法,一个是int类--基本数据类型}----两者都是比较的数值。上课好好听讲,多做做笔记哈。
回复 使用道具 举报
来看看大牛的解释,学习下
回复 使用道具 举报
比较姓名和年龄。
回复 使用道具 举报
加油加油
回复 使用道具 举报
return this.name.equals(p.name)&&this.age==p.age;
这里的equals是调用String类中的方法,String类中已经重写了equals方法 所以比较的不是地址值
&&这个符号是短路与必须要满足两边的条件才返回true,
回复 使用道具 举报
return this.name.equals(p.name)&&this.age==p.age;
比较两个对象的name属性和age属性是否相等。
&&是两者都要同时成立。
回复 使用道具 举报
同有疑惑  进来看下
回复 使用道具 举报
首先楼主定义的方法equals(Object obj)返回值是boolean类型,因此return返回值是boolean类型
其次return this.name.equals(p.name)&&this.age==p.age;这句话的意思是当要比较的对象的名字、年龄和调用equals方法对象的名字、年龄都相同时返回true,否则返回false。
Person p=(Person)obj;    要调用人特有功能,强制将父类Object引用转成Person类型  向下转型
this.name.equals(p.name)    String类复写了Object类中的equals方法,用于比较两个字符串是否相等。
回复 使用道具 举报
this.name  是String类型,而String类重写了equals方法,比较的是字符串的内容,不再是地址值。
回复 使用道具 举报
(楼主)这里的这个equals是说是所指的的字符串一样,是为什么,equals()比较的不是地址值是否一样吗,既然是两个new来的对象就会有两个不同的地址值,这里是怎样重写equals,让他们比较的是字符串相同的?不理解啊!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马