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

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

  • 相关阅读:
    guake 3.4发布,支持切分窗口
    tmux下vim颜色不正常问题
    tmux下make menuconfig背景色不正常问题
    命令行工具PathMarker
    busybox syslog介绍
    linux下检测可用串口并使用minicom打开(改进版)
    linux下检测可用串口并使用minicom打开
    guake终端复制标签页
    shell命令行混合进制计算器smartbc
    在shell脚本中添加暂停,按任意键继续
  • 原文地址:https://www.cnblogs.com/flydean/p/unicode-in-comments.html
Copyright © 2011-2022 走看看