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

谜题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

可以看出,上面这个程序都是利用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的可能性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值