Avatar ·

为什么Java会执行隐藏在Unicode注释中的代码?

大家好!我最近开始学习Java,遇到了一个奇怪的行为。写了一段简单的代码: ```java public class Test { public static void main(String[] args) { // \u000d System.out.println("Hello from comment!"); System.out.println("Hello world"); } } ``` 我本以为这段代码只会输出"Hello world",因为第二行是注释。但运行时却得到了: ``` Hello from comment! Hello world ``` 怎么会这样?我以为注释会被编译器完全忽略。为什么注释里的代码会被执行?这是编译器的bug还是有意为之? 我上网搜了一下,但没有找到适合新手的清晰解释。请解释一下这个Unicode魔法是如何工作的。另外,有没有办法防止代码中出现这样的"惊喜"?提前谢谢! <<>>

简短回答

Java在编译的最早阶段处理Unicode转义序列(例如\u000d)——在