谁能告诉我这里面的this代表什么?如果o是代表传入的学生对象,那么this又代表什么?

来源:6-8 学生选课--- 实现学生序列排序

福工刘德华

2017-11-06 16:36

代码:

@Override

public int compareTo(student o) {

// TODO 自动生成的方法存根

return this.id.compareTo(o.id);

}


写回答 关注

2回答

  • 慕粉3617928
    2017-11-06 21:13:38
    已采纳

    比如你有Student   A,Student B,两个对象,这样用:A.compareTo(B)。这里的compareTo就是上面写的方法,f方法里的this就是你调用方法的这个对象,也就是这的A,o是传入的对象,就是这的B。

    慕粉3617... 回复福工刘德华

    这个sort排序也是要去进行两个对象的比较的,sort在这是根据compareTo对对象比较来排序的,所以需要你定义这个方法。这里collection里是对象,对象的比较是需要你去定义比较的方式的,也就是定义的compareTo,和equals类似。这里sort方法里是调用了compareTo方法去比较排序,至于你说的this是什么?他实际也是通过刚说的A、B这种形式来比较的,就是这里面的对象Student。 这个需要配合代码看更容易理解,实在不明白,先记下上面说的用法,至于collection.sort就是它方法里的具体实现了。

    2017-11-06 23:37:11

    共 2 条回复 >

  • _Devil___4213279
    2017-11-06 21:10:47

    这里的this指的是调用该改写后的compareTo方法的对象,比如一个Student对象a,那么在对象a中调用compareTo方法就是a.compareTo(o),那么这个this指针指向的就是a对象,那么这个a.compareTo(o)的作用就是返回a.id与o.id的比较值,也就是在这里再调用a的属性id中的compareTo方法与o.id进行比较。从而实现根据学生id来对学生进行排序。重写这个方法主要是因为用sort方法对集合元素进行排序的时候,sort方法是通过对集合里的元素两两之间调用compareTo方法来排序的。

    _Devil... 回复福工刘德华

    在这个问题上我也是和你一样的想法法的呀,id为null,就不能调用其compareto方法。

    2017-11-07 16:30:17

    共 5 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题