Avatar ·

Por qué Java ejecuta código escondido en comentarios a través de Unicode?

¡Hola a todos! Empecé a estudiar Java recientemente y me encontré con un comportamiento extraño. Escribo un código simple: ```java public class Test { public static void main(String[] args) { // \u000d System.out.println("Hello from comment!"); System.out.println("Hello world"); } } ``` Esperaba que este código imprimiera solo "Hello world", porque la segunda línea es un comentario. Pero al ejecutarlo obtengo: ``` Hello from comment! Hello world ``` ¿Cómo es posible? Pensaba que los comentarios son completamente ignorados por el compilador. ¿Por qué se ejecuta el código dentro del comentario? ¿Es un error del compilador o está diseñado así? Busqué en Google, pero no encontré una explicación clara para principiantes. Expliquen, por favor, cómo funciona esta magia con Unicode. ¿Y se puede proteger uno de estas "sorpresas" en el código? ¡Gracias de antemano! <<>>

Respuesta breve

Java procesa las secuencias de escape Unicode (por ejemplo, \u000d) en la etapa más temprana de la compilación — antes