黑马程序员技术交流社区

标题: 此程序解释 [打印本页]

作者: 励志Java_鸿政    时间: 2015-1-10 14:29
标题: 此程序解释
import java.util.Comparator;
public class StringLengthComparator implements Comparator<String> {
        public int compare(String s1, String s2) {
                int length = s1.length() - s2.length();
                return length==0?s1.compareTo(s2):length;
        }

}
最后的三元运算符的意思:我的理解如果两个字符串的长度相等就进行自然顺序比较s1,s2谁靠前就返回谁(比如abc和bac,就返回abc),如果长度不一样,就返回length!!

最后这个length 就 懵了  不懂!返回的是长度?还是字符串还是什么?求理解
作者: 潘耿威    时间: 2015-1-10 14:37
我给你解释吧。  return length==0?s1.compareTo(s2):length;  首先0? 就决定了,使用的后面那个,length。所以返回的就是 int length。 三目运算是这样的:真还是假?如果真就用这个表达式:如果假就用这个表达式
作者: jojo    时间: 2015-1-10 14:38
最后的意思是,如果字符串的长度相等就,再调用字符串自己的compareTo方法比较自然顺序,其返回值可能是1,-1,0;如果不相等,就返回长度差,这个长度差可能大于1,也可能小于-1,
作者: 励志Java_鸿政    时间: 2015-1-10 15:00
潘耿威 发表于 2015-1-10 14:37
我给你解释吧。  return length==0?s1.compareTo(s2):length;  首先0? 就决定了,使用的后面那个,length。 ...

恩 , 有点儿那么个意思了  我自己再琢磨琢磨
作者: zhangyaya    时间: 2015-1-10 15:40
本帖最后由 zhangyaya 于 2015-1-10 15:46 编辑

length 就是长度差,return返回的是个整数。整个函数的功能是比较s1与s2的大小——比长度,长度相同比自然序——s1<s2 就是负数,s1>s2就是正数,完全相同就是0.  该函数的返回值只有正负号和0有意义,具体是数值没啥意义,因为  s1=“ab” s2=“abc” 与  s1=“abc”s2=“abd” 都返回-1 ,不能说s1比s2长度小1, 只能说s1小于s2这样个事实。
作者: 励志Java_鸿政    时间: 2015-1-10 15:48
zhangyaya 发表于 2015-1-10 15:40
length 就是长度差,return返回的是个整数。整个函数的功能是比较s1与s2的大小——比长度,长度相同比自然 ...

恩,妥了!这个清晰了。谢啦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2