A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//这个是string类中的compareTo方法!
//刚开始做错了!看了源码后我的小伙伴都惊呆了。。
//你知道输出的结果吗?



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



//其实输出的结果就是s1 的长度减去 s2 的长度
//答案是:2

7 个回复

正序浏览
底层好像就这这么写的
回复 使用道具 举报
ln0491 中级黑马 2015-10-14 09:31:56
7#
学习了。。。。。。。。。。
回复 使用道具 举报
没错大概就是这么理解的。
回复 使用道具 举报
maxwell247 发表于 2015-10-13 23:57
说的有道理!!
public int compareTo(String anotherString) {
        int len1 = value.length;

        
回复 使用道具 举报
说的有道理!!
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;
}
回复 使用道具 举报
Stirng 类的conmpareto方法就是比较的自然顺序的差值
回复 使用道具 举报
你是自定义了compareTo方法吗?还是调用的底层的默认方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马