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中的异常:不可执行源代码-错误的树类型:在pkg1.pkg4.taking.input.TakingInput.main(TakingInput.java:11(

为什么?

当我试图一次性打印几个比特操作的结果时,问题出现了,比如:

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

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

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

("The result is " + a) ^ a

这显然是行不通的。将括号括起来:

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

或者,正如Holger所提到的,您可以通过使用printf:来消除这个问题

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

最新更新