3

好的,我确定这一定存在于这里的某个地方,但我似乎找不到它。

是否存在,如果存在,是否存在最小(非空)String序列String#CompareTo

我猜"",但我不完全确定。

4

5 回答 5

1

鉴于String#compareTo(参见源代码)的实现,您可以验证大小为 0 的字符串(因此为空字符串)将始终低于或等于任何其他非空字符串。(在与空字符串比较的情况下相等)。

于 2013-03-23T21:07:53.290 回答
1

编辑:

试试这个,

   String s="";
      String s1=new String(new char[-2]);  // Here you will get NagativeArraySize Exception
     System.out.println(s1.compareTo(s));

这里 compareTo 在 System.out.println() 中不返回任何内容,因此最小字符串将是 "" 或 String.Empty


AFAIK,没有最小长度,您找不到长度<0的字符串,因此字符串的最小长度为 0(string.Empty 或“”)。

检查 CompareTo 的源代码,

public int compareTo(String anotherString) {
        int len1 = count;       // original string count
        int len2 = anotherString.count;  // comparision string count
        int n = Math.min(len1, len2);       
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;

        if (i == j) {
            int k = i;
            int lim = n + i;
            while (k < lim) {
                char c1 = v1[k];
                char c2 = v2[k];
                if (c1 != c2) {
                    return c1 - c2;
                }
                k++;
            }
        } else {
            while (n-- != 0) {
                char c1 = v1[i++];
                char c2 = v2[j++];
                if (c1 != c2) {
                    return c1 - c2;
                }
            }
        }
        return len1 - len2;
    }
于 2013-03-23T21:18:20.490 回答
0

没有最小长度,因为您可以有效地将两个空字符串与"".compareTo("")

于 2013-03-23T21:04:00.973 回答
0

是的,它是一个空字符串,其中没有值。

看看这个示例代码:

String str = "";
str.compareTo("");
于 2013-03-23T21:05:19.510 回答
0

是的,最小长度字符串将是一个长度为0的空字符串“”。我不认为会有这样一个长度小于0的字符串。

于 2013-03-23T21:07:33.600 回答