java的compareTo方法运行的原理

2024-12-17 11:53:03
推荐回答(5个)
回答1:

compareTo方法原理:先读取出字符串的第一个“字母”进行比较,比较的方法是ascii码表的值(字符所对应的十进制值),如果前面的大那么返回1,后面的大返回-1;此位置相同,继续比较下一位,直到最后一位,如果都相同的话,就返回0;

举例:
int cc= "13".compareTo("12");
System.out.println(cc);
int dd= "11".compareTo("12");
System.out.println(cc);
int dd= "aaa".compareTo("aaa");
System.out.println(cc);
结果就是:1(换行) -1(换行)0。

回答2:

int result=num>s.num ? 1 : (num==s.num ? 0 : -1);

num是上面定义的int num;相当于this.num..

s.num就是传来的那个对象的num..

比如你使用student1.compareTo(student2)那么
这句话的意思就是..如果student1的num大于student2的num..result就等于1。如果不是.就继续判断..如果student1的num等于student2的num..那么result就等于0..如果还不是..result就等于-1

回答3:

Student类有两个属性,num与name,猜测应该为学号与姓名。

compareTo为成员方法,num即this.num,表示当前对象的学号属性,而s.num就表示目标对象的学号属性。

根据Java语法: (条件表达式?A:B),这里如果表达式为真,则返回A,不然则返回B。
这里result的取值逻辑就是根据num与s.num比较,如果当前学号小的,则result=-1,如果相同,则为0,如果大,则result=1。
进而整个compareTo的意思是,先比较学号,如果学号小,则返回-1;如果学号大,则返回1;如果相同,则根据姓名的字符串比较来决定大小。

回答4:

int result=num>s.num ? 1 : (num==s.num ? 0 : -1);这句话num是什么

num就是你Student类中定义的int num;然后是num与s.num相比较。如果大于返回1,等于返回0,小于则返回-1。当相等即返回0时,则会拿name与s.name比较,并将值赋给result,最后返回result。

回答5:

num==s.num ? 0 : -1
的意思等同于

private Object a(){
if(num==s.num){
return 0;
}else{
return -1;
}
}

记住 有返回值。。 这个三步运算的意义就是 判断的同时并返回结果