Avatar ·

为什么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字符会导致意外行为吗?我该如何保护我的代码免受这种影响?