わかりました、これはここのどこかに存在するに違いないと確信していますが、見つけられないようです。
ある場合は、最小限の (null 以外の)String
シーケンスはありString#CompareTo
ますか?
推測し""
ていますが、完全にはわかりません。
編集:
これを試して、
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;
}
( sourceString#compareTo
を参照)の実装を考えると、サイズ 0 の文字列 (したがって空の文字列) が常に他の非 null 文字列よりも劣るか、等しいことを確認できます。(空文字列と比較した場合は等しい)。
2 つの空の文字列を有効に比較できるため、最小長はありません。"".compareTo("")
はい、値が含まれていない空の文字列です。
このサンプル コードを見てください。
String str = "";
str.compareTo("");
はい、最小長の文字列は、長さが 0 の空の文字列 "" になります。長さが 0 未満の文字列は存在しないと思います。