黑马程序员技术交流社区
标题:
compareTo的问题
[打印本页]
作者:
821728010
时间:
2013-5-30 00:00
标题:
compareTo的问题
本帖最后由 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是怎么处理参数的?
作者:
刘国强
时间:
2013-5-30 01:44
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
的第一个字母为
a
,
s1
的第一个字母为
f
,,,而a在f之前,所以返回一个整数(
如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数
),而
s2
的第一个字母为
a
与
s1
的第一个字母为
f
在英文字母表中相差5个字母,所以返回值为5.
第三个输出:和第二个输出的情况一样,所以也返回的一个整数,而这个整数,是出现第一个不同的字母时,两个字母之间相差的个数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2