好吧,我确定这个必须存在于这里某处,但我似乎无法找到它。根据字符串的最小字符串#CompareTo
是存在的,如果有什么,最小的(非空)String
根据String#CompareTo
序列?我想""
,但我不完全确定。
好吧,我确定这个必须存在于这里某处,但我似乎无法找到它。根据字符串的最小字符串#CompareTo
是存在的,如果有什么,最小的(非空)String
根据String#CompareTo
序列?我想""
,但我不完全确定。
鉴于String#compareTo
(请参阅source)的实现,您可以验证大小为0的字符串(因此为空字符串)总是低于或等于任何其他非空字符串。 (等于与空字符串比较的情况)。
是的,它是一个空字符串,在它没有价值。
看看此示例代码:
String str = "";
str.compareTo("");
虽然这显然有正确的答案,这个例子并不真的证明... – Jeff 2013-03-23 21:27:34
是最小长度的字符串将是一个空字符串“”用0。我不认为一个长度会有长度为这样的字符串小于0.
这并不回答这个问题。我没有要求最小长度,我按照词典顺序要求最小字符串。 – Jeff 2013-03-23 21:26:58
编辑:
试试这个,
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的最小长度(严格g.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;
}
我并不是要求最小长度,而是要求+1的代码来回答问题。 – Jeff 2013-03-23 21:30:02
做ü意味着的String.Empty; ? – Mikatsu 2013-03-23 21:02:48
@Mikatsu那是什么? – ddmps 2013-03-23 21:05:43
string.Empty是长度为0的字符串 – Mikatsu 2013-03-23 21:10:35