您的位置:首页 > 编程语言 > Java开发

java解惑之字符之谜(谜题17)

2015-01-11 21:36 267 查看
谜题17:嗯?

下面的是一个合法的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

[/code]
可以看出,上面这个程序都是利用Unicode转义字符编写的,编译后,我们会发现这是一个合法的java程序,并且打印的是Hello world。但是如果你不对它进行编译的话,也许你根本不知道这个程序是否是一个合法的java程序或者这个java程序的含义是什么,因此每当你没必要地使用了一个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的可能性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: