Java的注释真的不会被执行吗?

这个问题也是在别的地方看到的,原标题是《老师,你确定注释不会被执行吗?》。当然,标题不是重点,重点是Java注释真的会被执行吗?

一开始知道这个问题的时候我也是很疑惑,因为不管学习什么编程语言,最开始的时候都会被告知,注释是不会被执行的,那么现在为什么又出现了Java注释会被执行这一个说法。有句话说的好,你以为的只是你以为的,什么地方不清楚,写个程序跑一下就知道了。

话不多少,看代码,看结果

public class Test {
    
    
    public static void main(String[] args) {
    
    
        String str = "啊哈哈";
        // \u000d str = "啥也不会的程序员";
        System.out.println(str);
    }
}

正常来时,结果应该是打印啊哈哈。但是其实打印的是啥也不会的程序员。为什么结果会是打印啥也不会的程序员呢?既然不清楚,那就分析class文件呗,看看这个java程序被编译成了什么(使用工具:JD-GUI)

在这里插入图片描述

可以看到,在第12行出现了str = "啥也不会的程序员";这段代码,那么问题就来了,这段代码是哪来的?

看看上面代码就知道,这段代码其实是写在注释里面,但是意外出现了,注释似乎没有生效,注释似乎被解析编译了,然后运行了。

其实问题就出现在注释里面的\u000d这几个字符上,这是一个Unicode编码,表示的是一个换行符。这样就说的通了,为什么注释会被解析编译,然后运行。Java注释里运行写Unicode编码字符,然后在解析编译时,Unicode编码的\u000d这几个字符,会被解析为一个换行符,然后后面的代码就会被挤到下一行,从而被编译然后运行。

这就是为什么Java的注释(特殊的注释)会被执行

好吧,其实这篇文章很水…

猜你喜欢

转载自blog.csdn.net/Asdzxc968/article/details/106739871