前言

如上述题目,Java注释后的代码竟被执行了??这是怎么回事呢?

原因

先上代码:

public class Test {
    public static void main(String[] args) {
       // \u000d System.out.println("HelloWorld");
   }
}

结果输出:
HelloWorld

看到结果后,一时间感到惊讶,后来仔细想了下,可能是Unicode的问题,u000d 是换行符,导致注释被终止的问题。

Unicode 转义用于表示仅包含 ASCII 字符的 Unicode 符号。当您需要插入无法在源文件的字符集中表示的字符时,它将派上用场。JLS 3.3节的相关说明,Unicode 转义包含一个反斜杠字符(),后跟一个或多个'u'字符和四个十六进制数字。

可查看:https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.3

最后

知道了这个骚操作,还不快去坑队友。

Last modification:May 23rd, 2020 at 04:54 pm
如果觉得我的文章对你有用,请随意赞赏