栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么此代码反向写出“ Hello World!”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么此代码反向写出“ Hello World!”

这里有一些不可见的字符,它们会改变代码的显示方式。在Intellij中,可以通过将代码复制粘贴到空字符串(

""
)中来找到它们,该字符串将它们替换为Unipre转义符,消除其影响并显示编译器看到的顺序。

这是该复制粘贴的输出:

"class Mu202E{public static void main(String[]au202D){System.out.print(new char[]n"+        "{'H','e','l','l','o',' ','W','o','r','l','d','!'});}}   "

源代码字符按此顺​​序存储,并且编译器将其视为按此顺序存储,但它们的显示方式有所不同。

请注意,该

u202E
字符是从右到左的替代,开始一个块,其中所有字符都被强制从右向左显示,而字符
u202D
,这是一个从左到右的替代,开始一个嵌套块,其中所有字符被强制为从左到右的顺序,覆盖第一个替代。

Ergo在显示原始代码时

classM
会正常显示,但是将
u202E
所有内容的显示顺序从那里
u202D
颠倒到,从而再次颠倒了一切。(通常,从
u202D
到行终止符的所有内容都会反转两次,一次是由于的缘故,一次是由于,
u202D
其余的文字由于的缘故而反转
u202E
,这就是为什么此文本显示在行的中间而不是结尾的原因。)由于行终止符,下一行的方向性与第一行的方向无关,因此
{'H','e','l','l','o','','W','o','r','l','d','!'});}}
可以正常显示。

有关完整(极其复杂,长数十页)的Unipre双向算法,请参见Unipre标准附件#9。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号