comparTo方法,明明返回的是int类型的ID,什么时候成了String类型
课程第7分30左右讲到,Student类comparTo 方法比较结果:10000、37、644、897.是按照字符串的形式比较的,先比较第一位。
问:Student类的comparTo方法,明明返回的是int类型的ID,什么时候成了String类型,如果返回的是int类型的1000、37、644、897.那应该是按照数字顺序啊?
课程第7分30左右讲到,Student类comparTo 方法比较结果:10000、37、644、897.是按照字符串的形式比较的,先比较第一位。
问:Student类的comparTo方法,明明返回的是int类型的ID,什么时候成了String类型,如果返回的是int类型的1000、37、644、897.那应该是按照数字顺序啊?
2016-02-18
我犯了两个错误:
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接口的不同实现下方法的重写。
举报