为什么Java中的这行代码不打印消息?instanceOf java中的运算符
System.out.println("a instanceof String:"+a instanceof String);
为什么它只是打印真正的而不是字符串呢?
为什么Java中的这行代码不打印消息?instanceOf java中的运算符
System.out.println("a instanceof String:"+a instanceof String);
为什么它只是打印真正的而不是字符串呢?
啊,运营商优先级的乐趣。该行是有效的:
System.out.println(("a instanceof String:" + a) instanceof String);
...所以你在做字符串连接,然后检查结果是否是字符串。所以它会总是打印true
,不管值a
。
你只需要括号
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'是什么? – 2017-04-01 11:42:52
@RC .:碰巧,没关系。但是,是的,[mcve]会更好。 –
@JonSkeet我看到了你的答案,所以是的,在这种情况下并不重要;) – 2017-04-01 11:44:49