按位运算不与 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);
此代码
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);