软件研究所
2016-02-18 10:35
课程第7分30左右讲到,Student类comparTo 方法比较结果:10000、37、644、897.是按照字符串的形式比较的,先比较第一位。
问:Student类的comparTo方法,明明返回的是int类型的ID,什么时候成了String类型,如果返回的是int类型的1000、37、644、897.那应该是按照数字顺序啊?
我犯了两个错误:
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接口的不同实现下方法的重写。
我晕,刚问完就又仔细看了看,我犯了个错误。老师写的是
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入门第三季
409792 学习 · 4340 问题
相似问题