为什么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)——在