0


今天之后,我相信java注释会被编译器执行了

今天之后,我相信java注释会被编译器执行了:

java代码会被编译器执行吗?
对于这个问题,我相信很多人都会说上一句:

当然不会被执行呀

之前的我也是这么坚定地相信着,因为老师这么说,书上也是这么说的,我坚信任何代码只要加上//就可以完全不管不顾,但是今天遇见的一个bug让我彻底相信,java注释也是会被编译器执行的

bug代码:

if(file.isDirectory()){loadOne(file);}else{//D:\IdeaJava\untitled1\out\production\MySpringIOCProject\com\wql\daoImpl\userDaoImpl.class
            String oldpath = file.getAbsolutePath().substring(filepath.length()-1,file.getAbsolutePath().length());
             String newpath = oldpath.replaceAll("\\\\",".").replace(".class","");
            System.out.println(newpath);}

可以看到
D:\IdeaJava\untitled1\out\production\MySpringIOCProject\com\wql\daoImpl\userDaoImpl.class
被我添上注释,当我运行包含此注释的代码
idea报错
在这里插入图片描述
报错已经很清楚的提示,72行存在错误信息,且是非法的Unicode转义错误

纳尼?我明明将其注释了呀,怎么会这样呢

当我把注释彻底删除掉,再次执行
在这里插入图片描述
代码又奇迹般的正常运行,可以肯定,注释中的某些东西绝对影响了编译过程

那么到底是什么东西在持续的产生影响呢?

这是的我准备换个环境运行代码,我将在Eclipse环境下运行代码时,惊奇的发现
在这里插入图片描述

在Eclipse的环境下运行可以清楚的发现错误,看到\u报错的时候可能许多朋友已经明白了,\u不是表示16进制的unicode码吗
让我们再进一步,把鼠标移到报错上看看究竟是什么原因
在这里插入图片描述

可以看到,真相大白了
本被注释的\untitled中的\u在编译过程被错误的当做unicode码进行了处理,所以产生了报错

原来编译器会在编译其他代码之前先解析 Unicode 字符,而我们的注释中的字符意外的包含了编译器认为应该被解析的Unicode 字符,真是大水冲了龙王庙,一家人不认一家人了

所以,注释也有可能被编译器执行,今天之后,我相信java注释会被编译器执行了,希望大家在编写代码的过程中能够小心一点


本文转载自: https://blog.csdn.net/wenwenaier/article/details/115551559
版权归原作者 温文艾尔 所有, 如有侵权,请联系我们删除。

“今天之后,我相信java注释会被编译器执行了”的评论:

还没有评论