相关疑难解决方法(0)

为什么在允许某些Unicode字符的注释中执行Java代码?

以下代码生成输出"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规范允许这样做?

java unicode comments

1326
推荐指数
7
解决办法
7万
查看次数

标签 统计

comments ×1

java ×1

unicode ×1