• 什么?注释里面的代码居然能够执行


    注释大家都写过,应该都懂。注释就是给人看的,不是给机器看的,自然也就无法执行。

    但是今天就有一个例外,快让我们看一下吧。

    如果是下面一段代码,大家期望的输出是什么?

    public class escapesUsage {
    
        public static void main(String[] args) {
            // u000d System.out.println("www.flydean.com");
        }
    }
    

    main方法中的System.out.println被注释掉了。我们运行下看:

    www.flydean.com
    

    居然输出了结果。为什么呢?

    我们注意在注释后面,我们添加的是u000d,这是一个unicode编码,转换成ASCII编码就是换行符。

    在java中,unicode转换成ASCII是在任何词法翻译之前,所以上面的例子中的unicode会转换成为换行符,最终导致输出结果。

    实际上整个java程序都可以使用unicode来编写。

    给大家看一个别人写的:

    u0070u0075u0062u006cu0069u0063u0020u0020u0020u0020
    u0063u006cu0061u0073u0073u0020u0055u0067u006cu0079
    u007bu0070u0075u0062u006cu0069u0063u0020u0020u0020
    u0020u0020u0020u0020u0073u0074u0061u0074u0069u0063
    u0076u006fu0069u0064u0020u006du0061u0069u006eu0028
    u0053u0074u0072u0069u006eu0067u005bu005du0020u0020
    u0020u0020u0020u0020u0061u0072u0067u0073u0029u007b
    u0053u0079u0073u0074u0065u006du002eu006fu0075u0074
    u002eu0070u0072u0069u006eu0074u006cu006eu0028u0020
    u0022u0048u0065u006cu006cu006fu0020u0077u0022u002b
    u0022u006fu0072u006cu0064u0022u0029u003bu007du007d
    

    上面的代码输出”hello world“,不信可以自己去试试。

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/unicode-in-comments/

    本文来源:flydean的博客

    欢迎关注我的公众号:程序那些事,更多精彩等着您!

  • 相关阅读:
    AngularJS:添加检查密码输入是否一致的功能
    Clojure:两步发送iOS推送通知(apns)
    Openfire:解决乱码问题
    iOS:让UIView覆盖导航栏
    python 图片压缩存储
    jQuery 树形结构
    jsTree
    Mrakdown文本编辑器
    Flask jQuery ajax
    flask-sqlalchemy分表解决方案
  • 原文地址:https://www.cnblogs.com/flydean/p/unicode-in-comments.html
Copyright © 2020-2023  润新知