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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李凤鸣 中级黑马   /  2012-12-24 20:47  /  2273 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李凤鸣 于 2012-12-24 22:27 编辑
  1. class Person
  2. {
  3.         private String name;
  4.         private int age;
  5.         Person(String name,int age)
  6.         {
  7.                 this.name=name;
  8.                 this.age=age;
  9.         }

  10.         public boolean equals(Object obj)
  11.         {
  12.                 if(!(obj instansof Person))
  13.                         return false

  14.                 Person p=(Person)obj;
  15.                 System.out.println(this.name+"..."+p.name);
  16.                 return this.name.equals(p.name)&& this.age==p.age;
  17.         }



  18.         public String getName()
  19.         {
  20.                 return name;
  21.         }

  22.         public String getAge()
  23.         {
  24.                 return age;
  25.         }
  26. }
复制代码
想问下return this.name.equals(p.name)&& this.age==p.age; 这句中的equals(p.name)调用的是Person类中的public boolean equals(Object obj)这个方法吧,返回的值还可以调用自己么,有些晕

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

6 个回复

正序浏览
this.name.equals(p.name),这里的equals是this.name的方法,即String类变量name的方法、如果要想调用Person类中的public boolean equals(Object obj)方法必须new Person(String name,int age).quals()
回复 使用道具 举报
调用的String的,getName方法返回的是String;如果要调用Person类的equals方法,就要用Person类的对象来调用
回复 使用道具 举报
return this.name.equals(p.name),这句中this.name调用的不是Person类中的equals方法,this.name是String类型,String类中重写了Object类中的equals方法,所以String类型的对象调用的是String类中的equals方法。
回复 使用道具 举报
本帖最后由 刘经鹏 于 2012-12-24 21:12 编辑

return this.name.equals(p.name)&& this.age==p.age; 这句中的equals是属于String类中的方法。
public boolean equals(Object obj)是在覆写equals方法,定义自己的equals方法。
回复 使用道具 举报
本帖最后由 王博 于 2012-12-24 21:04 编辑

我认为 this.name.equals(p.name  这句中的equals(p.name)调用的并不是Person类中的equals方法,
而是调用的String类中的equals方法,是是要比较俩个字符串的值是不是一样的。

下面是在String类的equals方法摘要
boolean equals(Object obj)
              将此字符串与指定的对象比较
回复 使用道具 举报
本帖最后由 翁鹏 于 2012-12-24 20:56 编辑

想问下return this.name.equals(p.name)&& this.age==p.age; 这句中的equals(p.name)调用的是Person类中的public boolean equals(Object obj)这个方法吧,返回的值还可以调用自己么,有些晕

不是调用的Person类中的public boolean equals(Object obj)这个方法 你理解错误, 这个不是递归调用啊!

name属性的类型是String类型的,是String的一个实例, 所以调用的时String中的equals方法。 就是String对象调用自己的equals方法

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马