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.