按位操作未与 Java 中的 print() 中的字符串连接

此代码

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

工作刚刚好,但这个

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

产生异常:

线程“main” java.lang.RuntimeException中的异常:不可编译的源代码 - 错误的树类型:at pkg1.pkg4.taking.input.TakingInput.main(TakingInput.java:11)

为什么会这样?

当我尝试一次打印多个按位操作的结果时,问题出现了,如下所示:

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

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


答案 1

这是因为 的优先级高于 它编译为:+^

("The result is " + a) ^ a

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

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

或者正如Holger所提到的,您可以使用以下命令来消除此问题:printf

System.out.printf("The result is %d", a^a);

答案 2

推荐