Java 中的 `\u0027\n\u0027` 等于 `'\''` 吗?

aut*_*ode 10 java eclipse jls unicode-escapes ecj

我在玩Java Unicode Escapes时无意中发现了以下有趣的奇怪之处。这是我写的代码:

static void main(String... args) {
        /*
         * \u0027 - single quote
         */
        char e = \u0027\n\u0027;
        char f = '\'';

        System.out.println(e == f);
        
        //output: true
}
Run Code Online (Sandbox Code Playgroud)

查看编译后的代码,Java 编译器将它们翻译成相同的字符文字。

char e = '\'';
char f = '\'';
Run Code Online (Sandbox Code Playgroud)

通过什么转换规则e变成了 a'而不是换行符\n

顺便说一句,我在 Windows 11 上使用 Oracle JDK 19。

编辑:这个问题似乎与 Java 编译器未能按照 Java 语言规范工作有关。

编辑:当 Oracle JDK 19 在 JLS 18 模式下运行时,似乎会发生此问题。(我不知道如何正确地说这个)