Java中的字符串总是从compareTo返回某个结果?

时间:2013-06-27 17:23:43

标签: java compareto

对于任何String x,调用x.compareTo(y)时是否会始终返回负数String y?同样,是否有x总会返回正数?感谢。

3 个答案:

答案 0 :(得分:5)

没有。它总会有一个返回0的情况 - 那就是将字符串与同一个字符串进行比较。

答案 1 :(得分:1)

否,因为x.compareTo(x)对于任何0都是x,因为可以从源代码中推断出来(并且假设订单应该是连贯的):

1174    public int compareTo(String anotherString) {
1175        int len1 = count;
1176        int len2 = anotherString.count;
1177        int n = Math.min(len1, len2);
1178        char v1[] = value;
1179        char v2[] = anotherString.value;
1180        int i = offset;
1181        int j = anotherString.offset;
1182
1183        if (i == j) {
1184            int k = i;
1185            int lim = n + i;
1186            while (k < lim) {
1187                char c1 = v1[k];
1188                char c2 = v2[k];
1189                if (c1 != c2) {
1190                    return c1 - c2;
1191                }
1192                k++;
1193            }
1194        } else {
1195            while (n-- != 0) {
1196                char c1 = v1[i++];
1197                char c2 = v2[j++];
1198                if (c1 != c2) {
1199                    return c1 - c2;
1200                }
1201            }
1202        }
1203        return len1 - len2;
1204    }

现在,如果您的问题是关于最小和最大字符串,并且您接受0来比较x与其自身,那么相同的代码显示将任何字符串添加到字符串会产生“更大”字符串。

答案 2 :(得分:0)

在Java中, a.compareTo(b)将返回:

  • 负数如果 a&lt; B'/ em>的
  • 0 如果 a == b
  • 积极的如果 a&gt; B'/ em>的

我希望这会有所帮助