this关键字表示当前的对象,按这种理解,下面的代码中就有点问题了,代码如下:
public class Person implements Comparable {
private String name;
private int age;
public Person(String name, int i) {
super();
this.name = name;
this.age = i;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Object o) {
if (o instanceof Person) {
Person p = (Person) o;
int temp = this.age - p.age;//这里的this.age和p.age难道不是始终相等?
return temp == 0 ? this.name.compareTo(p.name) : temp;
}
return 0;
}
}
上述代码是给Person类加一个比较功能(先比较age,如果age相同则再比较name),通过实现Coparatable接口并重写compraTo()方法来实现,但是this.age和p.age不是应该始终相等吗?因为this表示当前Person的一个对象,而p也是当前Person类的一个对象,p和this的hash值应该是相同的,怎么这里表示的意思是不同,忘大神解释下?