2

是否有 a在被调用String x时总是返回负数x.compareTo(y),对于 any String y?同样,是否有一个x总是返回正数的?谢谢。

4

3 回答 3

5

不,当返回 0 时总会有一种情况 - 就是将字符串与相同的字符串进行比较。

于 2013-06-27T17:25:39.503 回答
1

不,因为可以x.compareTo(x)从源代码中推断出来(并且假设顺序应该是一致的):0x

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 与自身,那么相同的代码显示将任何字符添加到字符串会产生“更大”的字符。

于 2013-06-27T17:26:33.407 回答
0

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

  • 如果a < b则为负整数
  • 0如果a == b
  • 如果a > b则为正整数

我希望这有帮助

于 2013-06-27T17:27:37.507 回答