为什么Java会执行用Unicode字符写在注释中的代码?
大家好!我是Java新手,遇到了一种奇怪的行为,无法解释。我试图编写一个简单的"Hello, World!"程序,但偶然发现如果使用Unicode转义序列,注释内的代码也可以被执行。
下面是一个让我困惑的例子:
```java
public class Main {
public static void main(String[] args) {
// \u000d System.out.println("这行被执行了!");
System.out.println("Hello, World!");
}
}
```
当我运行这段代码时,控制台输出了两行:"这行被执行了!"和"Hello, World!"。但第一行是注释啊!这怎么可能?我以为注释会被编译器忽略。
我读到过这与Java处理Unicode的方式有关,但我不理解细节。为什么像\u000d(回车)这样的字符能"破坏"注释?还有其他类似的Unicode字符会导致意外行为吗?我该如何保护我的代码免受这种影响?