zoukankan      html  css  js  c++  java
  • 什么?注释里面的代码居然能够执行

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

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

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

    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的博客

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

  • 相关阅读:
    SpringMvc完成ajax功能
    接收的参数为日期类型
    Mybatis的逆向工程(generator)以及分页助手(pageHelper)
    springMVC静态资源的映射
    Mybatis框架
    写一个简单的SpringMvc的demo
    SpringMvc流程
    controller进行数据保存以及如何进行重定向跳转
    我爱C语言
    三列布局中有两列内容固定
  • 原文地址:https://www.cnblogs.com/flydean/p/unicode-in-comments.html
Copyright © 2011-2022 走看看