今天之后,我相信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注释会被编译器执行了,希望大家在编写代码的过程中能够小心一点

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温文艾尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值