1

重複の可能性:
Java で文字列を比較するにはどうすればよいですか?

私はプログラミングが初めてで、Javaを使用しています。これが私が書いたプログラムです:

class HelloApp {

    static String hi;

    public static void main(String[] args) {
        int length = args.length;
        if (length > 0) {
            hi = args[0];
            sayHi();
        }
    }

    static void sayHi() {
        if (hi == "hello") {
            System.out.println("Hello!");
        }
    }
}

私の質問は、「java HelloApp hello」と入力しても「Hello!」にならないのはなぜですか? 次の行に表示されますか?

4

5 に答える 5

10
if (hi == "hello") {

次のようにする必要があります。

if (hi.equals("hello")) {

==2 つの参照がヒープ内の同じオブジェクトを指しているかどうかをequals()チェックし、2 つの String 参照が同じ String 値を持つオブジェクトを指しているかどうかをチェックします。

于 2012-10-14T07:21:14.400 に答える
2

文字列を間違った方法で比較しています...

Javaで文字列を比較するにはどうすればよいですか?

static void sayHi() {
    if (hi.equals("hello")) {
        System.out.println("Hello!");
    }
}

これで問題が解決するはずです..

于 2012-10-14T07:22:07.003 に答える
2

==文字列の等価性ではなく、参照の等価性をテストします。.equals代わりに使用したい:

if (hi.equals("hello")) {
    ...
}
于 2012-10-14T07:22:09.093 に答える
2

s の比較Stringが間違っています。文字列が等しいかどうかを確認する適切な方法はstr.equals(anotherStr)、 またはを使用することstr.equalsIgnoreCase(anotherStr)です。オペレーターは==、内容ではなく、文字列が同じメモリー位置を指しているかどうかをチェックします。

于 2012-10-14T07:22:26.300 に答える
1

neilvillareal が str.equals(anotherStr) または str.equalsIgnoreCase(anotherStr) メソッドを使用できると述べたように、「==」メソッドと「equals/equalsIgnoreCase」メソッドの違いを理解するには、次のリンクを参照してください: http://www. java-samples.com/showtutorial.php?tutorialid=221

于 2012-10-14T09:08:38.243 に答える