什么?注释里面的代码居然能够执行
注释大家都写过,应该都懂。注释就是给人看的,不是给机器看的,自然也就无法执行。
但是今天就有一个例外,快让我们看一下吧。
如果是下面一段代码,大家期望的输出是什么?
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来编写。
给大家看一个别人写的:
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d
上面的代码输出”hello world“,不信可以自己去试试。
更多精彩内容且看:
- 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
- Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
- java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
本文作者:flydean程序那些事
本文链接:http://www.flydean.com/unicode-in-comments/
本文来源:flydean的博客
欢迎关注我的公众号:程序那些事,更多精彩等着您!
什么?注释里面的代码居然能够执行相关推荐
- java的注释规范_Java代码注释规范
1,单行(单行)-简短说明: ///... 单行注释: 代码中的单行注释. 最好在注释前有一个空行,并在其后加上与代码相同的缩进级别. 如果无法完成一行,则应使用块注释. 评论格式: 在行首注释: 在 ...
- Java笔记——Java代码块的执行顺序
Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...
- 注释 向 Java 代码中添加元数据
注释,J2SE 5.0 (Tiger) 中的新功能,将非常需要的元数据工具引入核心 Java 语言.该系列文章分为两部分,在这第 1 部分中,作者 Brett McLaughlin 解释了元数据如此有 ...
- vscode 注释多行代码_如何在Visual Studio Code中注释多行?
我找不到在Visual Studio Code中注释和取消注释多行代码的方法. 是否可以使用某些快捷方式在Visual Studio Code中注释和取消注释多行? 如果是,该怎么办? 当其中一行已被 ...
- python如何注释一段代码_python如何注释
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我是多行注释1 我是多行注释2 我是多行注释3print(我上面的是多行注释)内 ...
- 【Python】Python 注释 ( 单行注释 | 多行注释 | 代码示例 )
文章目录 一.Python 注释 1.单行注释 2.多行注释 3.代码示例 单行注释 : # 单行注释 多行注释 : """ 多行注释 多行注释 多行注释 "& ...
- Python03(注释、算术运算符、程序执行原理、变量使用)
注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...
- RCE代码及命令执行漏洞简解
在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用 代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代 码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏 洞 ...
- Java 代码编译和执行的整个过程
一.简述 Java代码编译和执行的整个过程包含了三个重要的机制: ①Java 源码编译机制: ②类加载机制: ③类执行机制 二.Java 源码编译机制 Java 代码编译是由 Javac 编译器来完成 ...
最新文章
- 干货 | 如何使用 CNN 推理机在 IoT 设备上实现深度学习
- 4.内核APC执行过程
- Scribe应用实例
- flutter的按钮如何变为不可选中_Flutter 61: 图解基本 Button 按钮小结 (一)
- memcached安装及.NET中的Memcached.ClientLibrary使用详解
- redis 管理工具_「程序猿同事的分享」redis cluster管理工具redis-trib.rb详解
- 遍历INI文件和删除指定域内容
- PHP数据处理基本校验
- 计算机的科学导论pdf,教材计算机科学导论.PDF
- latch:cbc等待
- 关于idea单元测试键盘无法输入的解决方法(终极版)
- JBOSS启动错误:Not pointing to a directory
- 独家!阿里开源自用OpenJDK版本,Java社区迎来中国力量
- iptables --algo 字符串匹配算法 bm kmp
- 基于ROS的语音控制机器人(一):基本功能的实现
- python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法
- Linux操作系统的基本命令
- netstat+taskkill命令解决windows端口占用问题
- 新南威语言班C加,2020年新南威尔士大学语言班要求高不高
- 华为hicar支持车型列表_华为重申不造车:谁再建言造车调岗处分