2017-04-01 8 views
4

Javaのこのコード行がメッセージを印刷しないのはなぜですか?javaのinstanceOf演算子

System.out.println("a instanceof String:"+a instanceof String); 

なぜそれは印刷されていますか?

+1

「a」が何であるか教えてください。 –

+1

@RC:それは起こるので、それは問題ではありません。しかし、はい、[mcve]が良いでしょう。 –

+0

@JonSkeet私はあなたの答えを見たので、はい、その場合は問題ではありません;) –

答えて

8

ああ、オペレータ優先順位の喜び。その行は効果的です:

...文字列の連結を行い、結果が文字列かどうかを確認しています。したがって、aの値にかかわらず、は常にプリントtrueになります。あなただけの括弧

System.out.println("a instanceof String:" + (a instanceof String)); 

が必要

が優先リストのJava tutorial page on operatorsを参照してください。

3

次のようにあなたのコードが実行されます:だから

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)); 
1

あなたは括弧を使用する必要があります。

System.out.println(("a instanceof String:"+a) instanceof String);