黑马程序员技术交流社区
标题:
关于equals的调用
[打印本页]
作者:
李凤鸣
时间:
2012-12-24 20:47
标题:
关于equals的调用
本帖最后由 李凤鸣 于 2012-12-24 22:27 编辑
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equals(Object obj)
{
if(!(obj instansof Person))
return false
Person p=(Person)obj;
System.out.println(this.name+"..."+p.name);
return this.name.equals(p.name)&& this.age==p.age;
}
public String getName()
{
return name;
}
public String getAge()
{
return age;
}
}
复制代码
想问下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