博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java解惑 - Hello world(续)
阅读量:4108 次
发布时间:2019-05-25

本文共 1405 字,大约阅读时间需要 4 分钟。

面的是一个合法的Java程序吗?如果是,它会打印出什么呢?
\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
这当然是一个合法的Java程序!这不是很显而易见吗?它会打印Hello World。噢,可能是不那么明显。事实上,该程序根本让人无法理解。每当你没必要地使用了一个Unicode转义字符时,都会使你的程序的可理解性更缺失一点,而该程序将这种做法发挥到了极致。如果你很好奇,可以看看下面给出的该程序在Unicode转义字符都被转换为它们所表示的字符之后的样子:
public class Ugly {public static void main( String[] args){
System.out .println( “Hello w”+ “orld”);}}
下面给出了将其进行格式化整理之后的样子:
public class Ugly {
public static void main(String[] args){
System.out.println("Hello w"+"orld"); } }
这个谜题的教训是:仅仅是因为你可以不以应有的方式去进行表达。或者说,如果你这么做会造成损害,那么就请不要这么做!更严肃地讲,这个谜题是对前面三个教训的补充:Unicode转义字符只有在你要向程序中插入用其他任何方式都无法表示的字符时才是必需的,除此之外的任何情况都不应该避免使用它们。Unicode转义字符降低了程序的清晰度,并且增加了产生bug的可能性。
对语言的设计者来说,也许使用Unicode转义字符来表示ASCII字符应该被定义为是非法的。这样就可以使得在谜题14、15和17(本谜题)中的程序非法,从而消除了大量的混乱。这个限制对程序员并不会造成任何困难。

转载地址:http://rbasi.baihongyu.com/

你可能感兴趣的文章
[MapReduce]Apache Hadoop 2.2.0MapReduce1.x向2.x迁移[翻译]
查看>>
[YARN]Apache Hadoop 2.2.0YARN技术架构[翻译]
查看>>
给正在找工作或刚工作的人几点建议
查看>>
Win7系统中telnet服务开启
查看>>
Node.js社区:一个人称代词引发的论战(转)
查看>>
linux脚本捡漏(1)
查看>>
memcached.c:657: error: 'IOV_MAX' undeclared (first use in this function)
查看>>
Hbase时间同步问题
查看>>
WinRAR官方正式版注册码
查看>>
DataNode: Exception in BPOfferService for Block pool BP解决方法
查看>>
linux免密钥SSH登陆配置
查看>>
zookeeper-3.4.5-cdh4.3.0分布式部署
查看>>
Hbase导入数据ImportTsv
查看>>
informix数据对比
查看>>
maven远程库列表
查看>>
eclipse工程目录插件
查看>>
如何在maven中echo一些信息
查看>>
你需要知道的几个理论和定理
查看>>
Hadoop2.2maven编译报MojoExecutionException异常
查看>>
普通Java工程利用注解Spring做周期性任务调度框架搭建
查看>>