Java中的unicode换行符(\ u000d)

我们来看下面的Java代码片段。

public class Main { public static void main(String[] args) { // new Character(' \u000d System.out.println("Hello"); } } 

在上面的代码中,虽然main()方法中的唯一一行被注释掉了,但它在控制台上显示输出Hello ,即使看起来这条注释行包含一些语法错误。 如果这一行没有注释,它将不会工作,导致编译时错误。

为什么在这里输出“Hello”?

Java在源代码中parsing字符转义码,而不仅仅是string。
这使您可以在不使用Unicode编码的情况下使用Unicode标识符。

因此,注释中的\u000d被parsing为一个换行符,结束注释并开始一个实例初始值设定项。

实际上它是Java Puzzlers之一。

谜题2:行式打印机

我真的推荐阅读整本书。