黑马程序员技术交流社区

标题: 一个注意:String类的compareTo()的方法! [打印本页]

作者: 小鹿    时间: 2015-10-13 22:31
标题: 一个注意:String类的compareTo()的方法!
//这个是string类中的compareTo方法!
//刚开始做错了!看了源码后我的小伙伴都惊呆了。。
//你知道输出的结果吗?



public static void main(String [] args) {
     String s1  = "heima";
     String s2 = "hei";
     System.out.println(s1.compareTo(s2));
}



//其实输出的结果就是s1 的长度减去 s2 的长度
//答案是:2
作者: Neverlandxu    时间: 2015-10-13 23:09
你是自定义了compareTo方法吗?还是调用的底层的默认方法
作者: CHENVICTORY    时间: 2015-10-13 23:26
Stirng 类的conmpareto方法就是比较的自然顺序的差值
作者: maxwell247    时间: 2015-10-13 23:57
说的有道理!!
public int compareTo(String anotherString) {
        int len1 = value.length;
        int len2 = anotherString.value.length;
        int lim = Math.min(len1, len2); //获得两个字符串长度较短的作为while()循环的次数
        char v1[] = value;
        char v2[] = anotherString.value;

        int k = 0; //索引从0开始
        while (k < lim) {
                char c1 = v1[k];
                char c2 = v2[k];
                if (c1 != c2) {
                        return c1 - c2; //两个字符相减得到的是两个字符相差的ASCII值
                }
                k++;
        }
        return len1 - len2;
}
作者: 小鹿    时间: 2015-10-14 08:55
maxwell247 发表于 2015-10-13 23:57
说的有道理!!
public int compareTo(String anotherString) {
        int len1 = value.length;

        
作者: heshiwei    时间: 2015-10-14 09:20
没错大概就是这么理解的。
作者: ln0491    时间: 2015-10-14 09:31
学习了。。。。。。。。。。
作者: 1312564637    时间: 2015-10-14 13:34
底层好像就这这么写的




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