1

変数を定数と比較する場合など、2 つの文字列を一緒に比較する場合、一部の人は異なるように見えることに気付きました。たとえば、定数文字列と入力メソッドがあるとします。

public final String CONSTANT_STRING = "A constant string";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

未知の入力を最初に使用する方が、何らかの方法で優れているか、または高速ですか:

br.readLine().equals(CONSTANT_STRING)

または定数を未知のものと比較するには:

CONSTANT_STRING.equals(br.readLine());
4

4 に答える 4

10

パフォーマンスの問題ではありません。2 番目のバージョンは、br.readLine() が null を返した場合でも、NullPointerException を生成しません。最初のものはそうします。

于 2013-01-04T10:23:32.783 に答える
3

それは良くも速くもありませんが、それが存在することを知っていれば、2 番目の方法で実行してCONSTANT_STRINGも絶対に得られないことが保証されますNullPointerException

于 2013-01-04T10:23:38.573 に答える
2

equals()Stringクラスのメソッドは、false比較する 2 つの文字列の長さが異なる場合に戻ります。2 つの文字列の長さが等しい場合にのみ内容を比較します。したがって、順序はパフォーマンスに影響しません。

他の回答でわかるように、2 番目の方法は発生しませんNullPointerException。したがって、2 番目の方法の方が適しています。

于 2013-01-04T10:29:08.627 に答える
1

公開抄録? String CONSTANT_STRING = "定数文字列";

于 2013-01-04T10:26:09.237 に答える