黑马程序员技术交流社区

标题: return这句话没有明白是什么意思 [打印本页]

作者: 妖妖    时间: 2015-3-29 10:15
标题: return这句话没有明白是什么意思
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;没有明白是什么意思,请大神详细讲解,谢谢啦
作者: 妖妖    时间: 2015-3-29 10:21
(楼主)这里的这个equals是说是所指的的字符串一样,是为什么,equals()比较的不是地址值是否一样吗,既然是两个new来的对象就会有两个不同的地址值,这里是怎样重写equals,让他们比较的是字符串相同的?不理解啊!!!
作者: 关山明月    时间: 2015-3-29 10:37
this.name  是String类型,而String类重写了equals方法,比较的是字符串的内容,不再是地址值。
作者: 翰墨    时间: 2015-3-29 10:49
首先楼主定义的方法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方法,用于比较两个字符串是否相等。

作者: 自学小番薯    时间: 2015-3-29 10:58
同有疑惑  进来看下
作者: lwj123    时间: 2015-3-29 11:25
return this.name.equals(p.name)&&this.age==p.age;
比较两个对象的name属性和age属性是否相等。
&&是两者都要同时成立。

作者: zmhlnrs    时间: 2015-3-29 11:47
return this.name.equals(p.name)&&this.age==p.age;
这里的equals是调用String类中的方法,String类中已经重写了equals方法 所以比较的不是地址值
&&这个符号是短路与必须要满足两边的条件才返回true,
作者: @G00DMaN    时间: 2015-3-29 12:57
加油加油
作者: Dark县令    时间: 2015-3-29 23:23
比较姓名和年龄。
作者: SunshineCui    时间: 2015-3-29 23:46
来看看大牛的解释,学习下
作者: Grady    时间: 2015-3-30 00:11
{一个是String类--引用类型,但是重写了equals方法,一个是int类--基本数据类型}----两者都是比较的数值。上课好好听讲,多做做笔记哈。
作者: 和谐木马    时间: 2015-3-30 00:13
return this.name.equals(p.name)&&this.age==p.age;这里面的这个equals是调用的String类的equals()方法,你查下API里,就知道String复写了equals()方法的,它返回值也是boolean类型的,相同返回true。后面==表达式返回的也是个boolean类型的,所以用&&相连后返回也是boolean类型的。
所以这里就是比较名字要相同,同时年龄要相等时返回ture。
作者: 尚巾仁杰    时间: 2015-3-30 00:19
this.name.equals(p.name)  &&   this.age==p.age;
逻辑运算符&& 和 比较运算符==的使用。
equals方法是重写了Object类中的方法,Person中这个方法是用来比较两个对象的名字,名字是String类型的,是对象,调用equals方法。而age年龄是int型的,是基本数据类型,直接使用比较运算符==比较。
作者: liyanghml    时间: 2015-3-30 00:27
意思就是 name和name比较的结果(真或假)与上age和age的比较结果;
作者: zhy934453950    时间: 2015-3-30 06:09
return是返回函数值
作者: 罗晓飞    时间: 2015-3-30 08:32
return  结果;
作者: 天马行空_黑马    时间: 2015-3-30 10:32
return this.name.equals(p.name)&&this.age==p.age
里面的this表示引用该方法的对象,那this.age和p.age究竟是哪两个对象的比较?




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