compareTo
は、一方の文字列がもう一方の文字列とどの程度相関しているかについて、否定的または肯定的な結果を返すことを知っていますが、その理由は次のとおりです。
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ac3") == -1) {
System.out.println("Test");
}
}
}
真実であり、
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ab3") == -1) {
System.out.println("Test");
}
}
}
本当ですか?
Comparable.compareTo(o)
の一般的な契約は
あなたの例では、"ab2".compareTo("ac3") == -1
と"ab2".compareTo("ab3") == -1
唯一の意味 _"ab2"
_が_"ac3"
_と_"ab3"
_の両方よりも低いことを意味します。これらの例だけでは、_"ac3"
_と_"ab3"
_に関して何も結論付けることはできません。
アルファベットではb
がc
の前にあり(つまり_"ab2" < "ac3"
_)、_2
_が_3
_の前にある(つまり_"ab2" < "ab3"
_ ):Java文字列をソートします 辞書式順序で 。
compareTo
sのString
は、最初のString
(メソッドが呼び出される)が2番目のString
(メソッドの引数)の前にある場合、-1を返します。辞書式順序で。 「ab2」は「ab3」の前(最初の2文字が等しく、2が3の前にあるため)および「ac3」の前(最初の文字が等しく、bがcの前にあるため)であるため、両方の比較で-1が返されます。
compareTo()は、アルファベット順に関して2つの文字列を比較します。両方のテストには、比較する文字列の「前」にアルファベット順にソートされた文字列があります。言い換えると:
ちなみに、compareTo
仕様では、関数は特に「-1」ではなく負の数を返すと記述されているため、ifステートメントでは「==-1」ではなく「<0」を使用する必要があります。