此代码
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);