operator logical bitwise java printing bitwise-operators operator-precedence

logical - Operación bitwise que no concatena con una cadena en print() en Java



string in java (1)

Esto se debe a que el + tiene mayor precedence que el ^ por lo que se compila para:

("The result is " + a) ^ a

Lo que obviamente no funcionará. Poner un paréntesis a su alrededor:

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

O como lo mencionó Holger, puede eliminar este problema usando printf :

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

Este codigo

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

funciona bien, pero este

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

produce una excepción:

Excepción en el hilo "main" java.lang.RuntimeException: Código fuente no compilable - Tipo de árbol erróneo: en pkg1.pkg4.taking.input.TakingInput.main (TakingInput.java:11)

¿Porque?

La pregunta surgió cuando intentaba imprimir los resultados de varias operaciones a nivel de bits de una sola vez, de la siguiente manera:

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

Busqué la descripción del método print() y varios temas sobre operadores bitwise e imprimiendo en la consola en SO, incluidos los temas recomendados al redactar la pregunta, pero no pude encontrar una respuesta.