爲什麼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