什么?注释里面的代码居然能够执行
2023-04-18 13:02:21 时间
注释大家都写过,应该都懂。注释就是给人看的,不是给机器看的,自然也就无法执行。
但是今天就有一个例外,快让我们看一下吧。
如果是下面一段代码,大家期望的输出是什么?
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的博客
欢迎关注我的公众号:程序那些事,更多精彩等着您!
相关文章
- 实现领域驱动设计 - 使用ABP框架 - 领域逻辑 & 应用逻辑
- c# sqlsugar,hisql,freesql orm框架全方位性能测试对比 sqlserver 性能测试
- MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI
- .NET6 开源之JSON 2 SQL (JORM框架)
- async和await详解
- 【学习笔记】WPF-02:XAML基础
- .Net Core 5.x Api开发笔记 -- Swagger设置Header(九)
- 【微服务专题之】.Net6下集成微服务网关-Ocelot
- 机加工行业MES系统模具行业MES系统CNCl中工行业MES系统MES扫码报工MES数据采集
- .net core 抛异常对性能影响的求证之路
- .NET C#基础(5):结构体 - 高性能代码的基石
- 是什么导致了客户端TCP连不上服务器?
- WindowsForm Button控件
- MAUI 自定义绘图入门
- net core天马行空系列-微服务篇:全声明式http客户端feign快速接入微服务中心nacos
- 驱动开发实战之TcpClient
- 关于c#多线程中的几个信号量
- C# WPF从后台代码生成行列可变的表格
- 搭建自己的开发框架(一).net core+vue+sqlsugar,(.net6)(前叙之唠叨篇)
- p2p-tunnel 打洞内网穿透系列(四)socks5代理和http1.1代理访问内网ftp服务