Java的注释真的不会被执行吗?
这个问题也是在别的地方看到的,原标题是《老师,你确定注释不会被执行吗?》。当然,标题不是重点,重点是Java注释真的会被执行吗?
一开始知道这个问题的时候我也是很疑惑,因为不管学习什么编程语言,最开始的时候都会被告知,注释是不会被执行的,那么现在为什么又出现了Java注释会被执行这一个说法。有句话说的好,你以为的只是你以为的,什么地方不清楚,写个程序跑一下就知道了。
话不多少,看代码,看结果
1 | public class Test { |
正常来时,结果应该是打印啊哈哈
。但是其实打印的是啥也不会的程序员
。为什么结果会是打印啥也不会的程序员
呢?既然不清楚,那就分析class文件呗,看看这个java程序被编译成了什么(使用工具:JD-GUI)
可以看到,在第12行出现了str = "啥也不会的程序员";
这段代码,那么问题就来了,这段代码是哪来的?
看看上面代码就知道,这段代码其实是写在注释里面,但是意外出现了,注释似乎没有生效,注释似乎被解析编译了,然后运行了。
其实问题就出现在注释里面的\u000d
这几个字符上,这是一个Unicode
编码,表示的是一个换行符。这样就说的通了,为什么注释会被解析编译,然后运行。Java注释里运行写Unicode
编码字符,然后在解析编译时,Unicode
编码的\u000d
这几个字符,会被解析为一个换行符,然后后面的代码就会被挤到下一行,从而被编译然后运行。
这就是为什么Java的注释(特殊的注释)会被执行
好吧,其实这篇文章很水….
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Blog!