此代码看起来显然不正确,但它很高兴地编译并在我的机器上运行。谁能解释一下这是如何工作的?例如,什么使")"课名有效后?散落的随机词怎么样?
class M{public static void main(String[]a){System.out.print(new char[]{'H','e','l','l','o',' ','W','o','r','l','d','!'});}}
在线测试:https://ideone.com/t1W5Vm
资料来源:https://codegolf.stackexchange.com/a/60561
答案 0 :(得分:7)
解读正在发生的事情的一种方法是逐个字符地查看程序(demo)。
您可能会发现位置{{shoppingCart.totalCost() | number:2 }}
和7
中的字符是特殊的UNICODE字符42
(从右到左的顺序)和RLO
(从左到右)正确的顺序)字符。
删除它们后,程序开始显示正常:
LRO
混淆程序编译的原因是Java编译器将这些特殊字符忽略为格式字符。
答案 1 :(得分:1)
这是有效的java代码,但它使用了阿拉伯语"对齐"不可见的零宽度ubicode字符。尝试将光标放在文本中,然后按向右箭头。 M" M" M"" M"和")",和一个" char []"和" a []"。
我尝试格式化代码,但在导航中只是令人沮丧。
答案 2 :(得分:1)
您可以在源中找到两个unicode序列
0xE2 0x80 0xAE http://www.fileformat.info/info/unicode/char/202e/index.htm
0xE2 0x80 0xAD http://www.fileformat.info/info/unicode/char/202d/index.htm
有效地写作部分:
从右到左{public static void main(String[]a