为什么Java中的这行代码不能打印消息?
System.out.println("a instanceof String:"+a instanceof String);
为什么它只是打印true而不是之前的String ???
答案 0 :(得分:8)
啊,运营商优先的乐趣。那条线是有效的:
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以获取优先列表。
答案 1 :(得分: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));
答案 2 :(得分:1)
你必须使用括号。
System.out.println(("a instanceof String:"+a) instanceof String);