私は持っています
String x = g.substring(0, 1);
if (x == "S") {
stuff
}
「Safety」という文字列がありますが、「stuff」が実行されず、時計にx value = S and x=="S"
=falseと表示されます。
==
は比較に使用され、2つが同じオブジェクト(この場合はオブジェクト)を指してidentity
いるかどうかをチェックします。reference
String
equals
文字列の内容を比較するには、次のメソッドを使用する必要があります。
if (x.equals("S"))
x=="S"
これは、使用する必要のある文字列の同等性ではなく、参照を比較します"S".equals(x)
。
equals()
代わりに、ではなくStringクラスのメソッドを使用してください==
。
if(x.equals("S"))
==値ではなく、参照をチェックします。
String.equals
文字列の内容を比較するために使用する必要があります。演算子は、==
オブジェクト参照の比較に使用されます。
引数の位置を切り替えると、次のことが回避されますNullPointerException
。
if ("S".equals(x))
この.equals
メソッドを使用して、文字列 (および一般に非プリミティブ) を比較する必要があります。
if (x.equals("S")) {
//stuff
}
Java ではequals()
、等価性を==
チェックし、ID をチェックします。
たくさんの問題...
あなたの変数x
はString
! ==
それに演算子を使用しないでください。.equals()
代わりに使用してください
また、それを行っている間は、.equalsIgnoreCase()
大文字と小文字を区別しないように使用する必要があります。
ちなみに、指定した場所の文字を返すString.charAt(int)関数もあることに注意してください...
しかし、すべての文字列を選択したい場合 (あなたの質問は、あなたが達成しようとしている理由と目的を明らかにしていませんでした)、私は正規表現を調べ、 String.matches()を使用します
charAt
関数を使用して、次のようにしてみませんか。
char x = g.charAt(0);
if (x == 'S') {
// Stuff
}
char を使用したくない場合は、ブロック比較equals
でメソッドを次のように使用します。if
String x = g.substring(0, 1);
if (x.equals("S")) {
// stuff
}