1

オラクルのWeb サイトの Java API : "compareTo 戻り値: "引数文字列がこの文字列と等しい場合は値 0。この文字列が文字列引数より辞書的に小さい場合は 0 より小さい値。この文字列が文字列引数よりも辞書的に大きい場合は、0 より大きい値。""

ここにif文があります:

String a = "abd";
String b = "abc";

if(a.compareTo(b) >= 1)

文字列 a の方が辞書式に大きいため、 true を返します。

私の質問は、compareTo は常に 0、1、または -1 を返すのですか? または、文字列が文字列引数よりも大きいまたは小さい実際の量を返しますか。

上記の if 文では、「abd」は「abc」より 1 大きいので、1 を返すのでしょうか。

4

3 に答える 3

5

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo%28java.lang.String%29によると

この場合、compareTo は、2 つの文字列内の k > の位置にある 2 つの文字値の差、つまり次の値を返します。

this.charAt(k)-anotherString.charAt(k)

それらが異なるインデックス位置がない場合、短い文字列が長い文字列より辞書的に先行します。この場合、compareTo は文字列の長さの差、つまり次の値を返します。

this.length()-anotherString.length()

最後のケースでは、 の長さについて、String-1、0、1 以外を返すことができると思われるドキュメントによると

于 2013-09-14T06:14:35.083 に答える
5

あなたに関する限り、compareTo戻り値の大きさはわかりません。符号だけです。実際には、ほとんどのcompareTo実装は -1、0、または 1 を返しますが、コントラクトは明確に正か負かを示しており、それに応じてコードを記述する必要があります (例: を使用int compare = a.compareTo(b); if(compare > 0) {...} else...)。

于 2013-09-14T06:12:47.680 に答える