compareTo()方法中的 if(this.getAge()>stu.getAge()) 的this.getAge()指的是?实例化对象传入的参数不都是stu.getAge() 我想了好久都不知道这个this表示什么
import java.util.Arrays;
import java.util.Comparator;
public class Student implements Comparable{
//就简单点按年龄大小排序
private int age;
Student(){
this.age = 0;
}
Student(int age){
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Student stu) {
if(this.getAge()>stu.getAge()){
return 1;
}else if(this.getAge()<stu.getAge()){
return -1;
}else{
return 0;
}
}
public static void main(String[] args) {
Student stu[] = new Student[3];
stu[0] = new Student(2);
stu[1] = new Student(1);
stu[2] = new Student(3);
Arrays.sort(stu);
这个很好理解吧, compareTo的用法一般就是这样:
Student stu1 = new Student(3);
Student stu2 = new Student(5);
stu1.compareTo(stu2); // 对应代码: this就是对象stu1, 参数stu就是对象stu2
java中this代表的是当前对象的实例,例如Test t = new Test(); t为Test对象的一个实例,在t实例中this与t等价,回到你的代码所以
this.getAge()表示调用你当前对象的getAge()方法而stu.getAge()表示调用public int compareTo(Student stu)这个入参stu对象的
getAge()方法
谢谢
在实例对象的非静态方法里面都有一个this和super对象,this指的是调用该非静态方法的实例对象,super是指调用该非静态方法的实例对象的父类对象,this.xxx()调用的是该实例对象里面的非静态方法,super.xxx()调用的是父类对象里面的非静态方法。 ps: xxx表示的是方法名