以下代码生成输出"Hello World!" (不,真的,试试吧).
public static void main(String... args) {
// The comment below is not a typo.
// \u000d System.out.println("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
原因是Java编译器将Unicode字符解析\u000d为新行并转换为:
public static void main(String... args) {
// The comment below is not a typo.
//
System.out.println("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
从而导致评论被"执行".
由于这可以用来"隐藏"恶意代码或恶意程序员可以设想的任何东西,为什么在评论中允许它?
为什么Java规范允许这样做?