2

java中this关键字的疑惑

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值应该是相同的,怎么这里表示的意思是不同,忘大神解释下?

查看全部
tianbiandetianbian
AlanJiangNLP
2017/08/13 08:00
  • java
  • 对象
  • this
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

7个回复