黑马程序员技术交流社区

标题: 关于equals的调用 [打印本页]

作者: 李凤鸣    时间: 2012-12-24 20:47
标题: 关于equals的调用
本帖最后由 李凤鸣 于 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)这个方法吧,返回的值还可以调用自己么,有些晕

作者: 翁鹏    时间: 2012-12-24 20:54
本帖最后由 翁鹏 于 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方法


作者: 一帆风顺    时间: 2012-12-24 20:59
本帖最后由 王博 于 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 21:01
本帖最后由 刘经鹏 于 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:05
return this.name.equals(p.name),这句中this.name调用的不是Person类中的equals方法,this.name是String类型,String类中重写了Object类中的equals方法,所以String类型的对象调用的是String类中的equals方法。
作者: 黄锦成    时间: 2012-12-25 09:18
调用的String的,getName方法返回的是String;如果要调用Person类的equals方法,就要用Person类的对象来调用
作者: 范德农    时间: 2012-12-25 14:28
this.name.equals(p.name),这里的equals是this.name的方法,即String类变量name的方法、如果要想调用Person类中的public boolean equals(Object obj)方法必须new Person(String name,int age).quals()




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