黑马程序员技术交流社区
标题:
求解关于String类中compareTo()方法的问题。
[打印本页]
作者:
曾经的迷失
时间:
2013-10-21 23:34
标题:
求解关于String类中compareTo()方法的问题。
为什么比较结果返回值是-2啊?
class StringMethodDemo
{
public static void method_7()
{
String s1 = "abb";
String s2 = "ccc";
sop(s1.compareTo(s2));
}
public static void main(String[] args)
{
method_7();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
作者:
回天之力
时间:
2013-10-22 00:05
compareto()就是比较两个数据的大小关系 大于0表示前一个数据比后一个数据大, 0表示相等,小于0表示第一个数据小于第二个数据,具体返回什么值不确定。
作者:
张运
时间:
2013-10-22 00:08
请参照jJDK API :如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。至于为啥是-2,我认为应该应该和哈希值有关吧,不确定。
作者:
wenbaoxing
时间:
2013-10-22 00:33
请看以下代码,当中有我的注释:
package com.itheima;
//为什么比较结果返回值是-2啊?
class StringMethodDemo {
public static void method_7() {
String s1 = "abb";
String s2 = "ccc"; //如果将它改为"acc",则会返回-1
sop(s1.compareTo(s2));
/*
你查看jdk API会发现此方法是按字典顺序比较的,先拿第一个字符串的a和
第二个字符串的c进行比较,'a'-'c'=-2,所以返回-2(a的ASCII码是97,c是99)
*/
}
public static void main(String[] args) {
method_7();
System.out.println((int)'a');
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
复制代码
作者:
Simple_love
时间:
2013-10-22 01:44
两个字符串比较大小,其实就是比较字符串上的每个字符进行比较, 按照自然的顺序比较,当一个字符串s1上的某个位置上的字符小于s2某个位置上的字符时。 则返回两个字符串同一个位置上的字符ASCII码相减之后的值,
作者:
曾经的迷失
时间:
2013-10-22 09:02
标题:
RE: 求解关于String类中compareTo()方法的问题。
wenbaoxing 发表于 2013-10-22 00:33
请看以下代码,当中有我的注释:
{:soso_e181:}{:soso_e129:}明白了!!
作者:
杨增坤
时间:
2013-10-23 08:46
以后发帖要注意排版哦!
作者:
1961993790
时间:
2013-10-23 10:57
compareTo方法是将两个字符串进行每个字符的Ascii码比较,发现不同时返回s1相对位置减去s2相对位置的字符的值,照你的题目,两个字符串的第一处不同出现在第一位,也就是a和c,a的ascii码为97,c的ascii码99,所以,返回值为97-99=-2,如果你用s2.compareTo(s1),则返回的是-2,希望对你有帮助!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2