Javaのこのコード行がメッセージを印刷しないのはなぜですか?javaのinstanceOf演算子
System.out.println("a instanceof String:"+a instanceof String);
なぜそれは印刷されていますか?
Javaのこのコード行がメッセージを印刷しないのはなぜですか?javaのinstanceOf演算子
System.out.println("a instanceof String:"+a instanceof String);
なぜそれは印刷されていますか?
ああ、オペレータ優先順位の喜び。その行は効果的です:
...文字列の連結を行い、結果が文字列かどうかを確認しています。したがって、a
の値にかかわらず、は常にプリントtrue
になります。あなただけの括弧
System.out.println("a instanceof String:" + (a instanceof String));
が必要
が優先リストのJava tutorial page on operatorsを参照してください。
次のようにあなたのコードが実行されます:だから
System.out.println(("a instanceof String:"+a) instanceof String);
、文字列全体はすなわち、("a instanceof String:"+a)
はinstanceof
チェックのために考えられてきました。
印刷するために、"a instanceof String:true"
は、あなたは正しい場所に括弧を使用する必要があります。
System.out.println("a instanceof String:" + (a instanceof String));
あなたは括弧を使用する必要があります。
System.out.println(("a instanceof String:"+a) instanceof String);
「a」が何であるか教えてください。 –
@RC:それは起こるので、それは問題ではありません。しかし、はい、[mcve]が良いでしょう。 –
@JonSkeet私はあなたの答えを見たので、はい、その場合は問題ではありません;) –