0

私は持っています

String x = g.substring(0, 1);
if (x == "S") {
    stuff
}

「Safety」という文字列がありますが、「stuff」が実行されず、時計にx value = S and x=="S"=falseと表示されます。

4

9 に答える 9

2

==は比較に使用され、2つが同じオブジェクト(この場合はオブジェクト)を指してidentityいるかどうかをチェックします。referenceString

equals文字列の内容を比較するには、次のメソッドを使用する必要があります。

if (x.equals("S"))
于 2012-10-14T20:26:21.730 に答える
1

x=="S"これは、使用する必要のある文字列の同等性ではなく、参照を比較します"S".equals(x)

于 2012-10-14T20:26:28.023 に答える
1

equals()代わりに、ではなくStringクラスのメソッドを使用してください==

于 2012-10-14T20:26:31.907 に答える
0
if(x.equals("S"))

==値ではなく、参照をチェックします。

于 2012-10-14T20:26:31.830 に答える
0

String.equals文字列の内容を比較するために使用する必要があります。演算子は、==オブジェクト参照の比較に使用されます。

引数の位置を切り替えると、次のことが回避されますNullPointerException

if ("S".equals(x))
于 2012-10-14T20:27:03.953 に答える
0

この.equalsメソッドを使用して、文字列 (および一般に非プリミティブ) を比較する必要があります。

if (x.equals("S")) {
    //stuff
}
于 2012-10-14T20:27:04.023 に答える
0

Java ではequals()、等価性を==チェックし、ID をチェックします。

于 2012-10-14T20:27:48.820 に答える
0

たくさんの問題...

  • あなたの変数xString! ==それに演算子を使用しないでください。.equals()代わりに使用してください

  • また、それを行っている間は、.equalsIgnoreCase()大文字と小文字を区別しないように使用する必要があります。

  • ちなみに、指定した場所の文字を返すString.charAt(int)関数もあることに注意してください...

しかし、すべての文字列を選択したい場合 (あなたの質問は、あなたが達成しようとしている理由と目的を明らかにしていませんでした)、私は正規表現を調べ、 String.matches()を使用します

于 2012-10-14T20:29:13.143 に答える
0

charAt関数を使用して、次のようにしてみませんか。

    char x = g.charAt(0);
    if (x == 'S') {
       // Stuff
    }

char を使用したくない場合は、ブロック比較equalsでメソッドを次のように使用します。if

   String x = g.substring(0, 1);
   if (x.equals("S")) {
      // stuff
   }
于 2012-10-14T20:31:53.577 に答える