java解惑之字符之谜(谜题17)
2015-01-11 21:36
267 查看
谜题17:嗯?
下面的是一个合法的java程序吗?如果是,它会打印什么呢?
[/code]
可以看出,上面这个程序都是利用Unicode转义字符编写的,编译后,我们会发现这是一个合法的java程序,并且打印的是Hello world。但是如果你不对它进行编译的话,也许你根本不知道这个程序是否是一个合法的java程序或者这个java程序的含义是什么,因此每当你没必要地使用了一个Unicode转义字符时,都会使你的程序缺失一点可理解性。上面这个程序将这种做法发挥到了极致,现在来看下Unicode转义字符转换后表示的程序:
public
class Ugly
{public
static
void main(
String[]
args){
System.out
.println(
"Hello w" +
"orld");}}
对其进行整理后:
这个谜题告诉了我们,在今后写程序时,如果你知道这么做会造成损害的时候,那么就请不要这么做!这个谜题也是对前面三个谜题的一个补充吧,只有在你要向程序中插入用其它任何方式都无法表示的字符时,Unicode转义字符才是必需的,除此之外的任何情况都应该避免使用它们。Unicode转义字符降低了程序的清晰度,并且增加了产生bug的可能性。
下面的是一个合法的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的可能性。
相关文章推荐
- java解惑之字符之谜(谜题14)
- java解惑之字符之谜(谜题22)
- java解惑之字符之谜(谜题16)
- java解惑之字符之谜(谜题20)
- Java解惑2——字符谜题(易混淆13处)
- java解惑2-字符谜题
- java解惑之字符之谜(谜题18)
- java解惑之字符之谜(谜题11)
- java解惑之字符之谜(谜题13)
- java字符谜题
- java解惑之表达式之谜(谜题1)
- 《Java解惑》系列——02字符谜题——谜题22:URL愚弄(Java中的标号)
- java解惑之表达式之谜(谜题3)
- 【java解惑】java字符串比较那些事儿
- Java解惑3——循环谜题(易混淆12处)
- java解惑之表达式之谜(谜题10)
- 《Java解惑》系列——02字符谜题——谜题17:嗯??
- 《Java解惑》系列——Java中的转义字符(为谜题14至17提供基础知识)
- java解惑之表达式之谜(谜题8)
- Java谜题畅读版之字符谜题