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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 821728010 中级黑马   /  2013-5-30 00:00  /  932 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 821728010 于 2013-6-5 20:17 编辑

class Demo17 {
        public static void main(String[] args)
        {
                method();
        }
        public static void method()
                {
                String s1=new String("fgf");
                String s2=new String("af");
                String s3=new String("abc");
                System.out.println(s1.compareTo(s1));
                System.out.println(s1.compareTo(s2));
                System.out.println(s1.compareTo(s3));
        
                }
}

不明白输出结果,compareTo是怎么处理参数的?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

1 个回复

正序浏览
public int compareTo(String anotherString)按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;

在楼主给的代码中

第一个输出:因为是s1与自己比较所以两个的比较结果为true,返回0

第二个输出:应为s1的字符串为“fgf”,与s2("af")进行比较由于按字典顺序(a,b,c,d,e,f,g..............)进行比较,从第一个字母开始比较,发现s2的第一个字母为as1的第一个字母为f,,,而a在f之前,所以返回一个整数(如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数),而s2的第一个字母为as1的第一个字母为f在英文字母表中相差5个字母,所以返回值为5.

第三个输出:和第二个输出的情况一样,所以也返回的一个整数,而这个整数,是出现第一个不同的字母时,两个字母之间相差的个数。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马