按位运算不与 Java 中 print() 中的字符串连接

Bitwise operation not concatenating with string in print() in Java

此代码

int a = 6;
System.out.print("The result is " + a*a);

工作正常,但是这个

int a = 6;
System.out.print("The result is " + a^a);

产生异常:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: at pkg1.pkg4.taking.input.TakingInput.main(TakingInput.java:11)

为什么会这样?

当我试图一次性打印多个按位运算的结果时出现了问题,如下所示:

System.out.print(a&b + "\n" + a|b + "\n" + a^b);

我查阅了 print() 方法的描述和几个关于按位运算符和在 SO 上打印到控制台的主题,包括在撰写问题时推荐的主题,但找不到答案。

这是因为 +precedence^ 高,所以它编译为:

("The result is " + a) ^ a

这显然行不通。在它周围加上括号:

System.out.print("The result is " + (a^a));

或者如 Holger 所述,您可以使用 printf:

来消除此问题
System.out.printf("The result is %d", a^a);