JAVAの学習を始めたばかりです。
コマンドライン引数に基づいて何かを印刷するための非常に単純なプログラムを書いています。
しかし、期待どおりに機能していません。
これが私のプログラムと出力です。
「e」と表示されるはずですが、「n」と表示されています。
私が間違っているところを教えてください。
JAVAの学習を始めたばかりです。
コマンドライン引数に基づいて何かを印刷するための非常に単純なプログラムを書いています。
しかし、期待どおりに機能していません。
これが私のプログラムと出力です。
「e」と表示されるはずですが、「n」と表示されています。
私が間違っているところを教えてください。
演算子は参照が同じオブジェクトを指しているかどうかのみをチェックするString.equals()
ため、文字列は と比較する必要があります。==
if ("e".equals(e)) {
// they are equivalent strings
}
ヘキサシアニドの答えの構文についてうるさいわけではありませんが、文字列を「e」に等しいと比較すると、私の意見ではより論理的でクリーンになります。
if (e.equals("e")) { /* e == "e" */ }
それは次のように述べているからです: 見つかった文字列 e が探しているもの (この場合は "e") である場合、何かを実行します。
もう 1 つの理由は、「e」はその時点では単なる文字の配列であり、e はすでに文字列であることです。今、私はこれについて100%確信が持てませんが、equalsメソッドには、文字配列用のより効率的なオーバーライドメソッドがどこかにあると思います。"e" を .equals の前に置く場合、"e" は最初に文字列に変換されてから評価されます。つまり、コンパイラがそれを最適化しない場合です。