comparTo方法,明明返回的是int类型的ID,什么时候成了String类型

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

软件研究所

2016-02-18 10:35

课程第7分30左右讲到,Student类comparTo 方法比较结果:10000、37、644、897.是按照字符串的形式比较的,先比较第一位。

问:Student类的comparTo方法,明明返回的是int类型的ID,什么时候成了String类型,如果返回的是int类型的1000、37、644、897.那应该是按照数字顺序啊?

写回答 关注

2回答

  • 软件研究所
    2016-02-18 11:16:48

    我犯了两个错误:

    1、我忘记了老师当初声明的变量String id; 不是 int id;

    2、在

    public int compareTo(Student o){

    return this.id.compareTo(o.id); //相当于返回的是return 0/正整数/负整数;

    }

    方法中,我误认为两个compareTo 都是Student类的方法。那么第二个compareTo(o.id)就不对了,o.id是String类型,而第一个要的参数是Student类型。

    实际上第一个compareTo是Student类的方法。而第二个compareTo是this.id (他是个String)这个String 的方法。可以去查java.lang.String.compareTo()方法。两个compareTo不是一码事,是两个类对comparable接口的不同实现下方法的重写。

  • 软件研究所
    2016-02-18 10:43:12

    我晕,刚问完就又仔细看了看,我犯了个错误。老师写的是

    public int compareTo(Student o){

    return this.id.compareTo(o.id);//“this.id.compareTo(o.id)”执行后的值就三类:正整数(大于)、负整数(小于)、0(相等)。

    //首先Student类的ID当初声明的就是String类型的(我又回头看了下老师写的Student类,确实是String类型String id;) 这里相当于是this.id.compareTo()   执行了  id值的比较,然后返回正、负、零。

    }

Java入门第三季

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

409784 学习 · 4339 问题

查看课程

相似问题