Java隐藏代码
不久前,我遇到了字符串中不可見字符的問題。 因?yàn)樗鼈兪遣豢梢姷?#xff0c;所以它們確實(shí)會(huì)引起混亂。 String a = "Hello\u200e";String b = "Hello\u200f";System.out.println('\'' + a + "' and '" + b + "' are length "+ a.length() + " and " + b.length() + ", equals() is " + a.equals(b));
版畫
'Hello?' and 'Hello?' are length 6 and 6, equals() is false不可見的標(biāo)識(shí)符
想象一下我對(duì)發(fā)現(xiàn)您可以在Java:P中的標(biāo)識(shí)符中使用不可見字符的反應(yīng)。 這些字符不能出現(xiàn)在Java標(biāo)識(shí)符的開頭,但可以出現(xiàn)在其他任何位置。
System.out.println("String _\u200e = \"Hello \";");System.out.println("String _\u200f = \"World\";");System.out.println("String _\u200e\u200f = \" !!\";");System.out.println("System.out.println(_\u200e+_\u200f+_\u200e\u200f);");版畫
String _? = "Hello "; String _? = "World"; String _?? = " !!"; System.out.println(_?+_?+_??);運(yùn)行時(shí)打印
Hello World !!因此,我們有三個(gè)標(biāo)識(shí)符都顯示相同的標(biāo)識(shí)符,因?yàn)樗鼈兊拿Q中具有不同的不可見字符!
令人驚訝的是,此代碼編譯,運(yùn)行并打印了可能在標(biāo)識(shí)符中但未啟動(dòng)的所有字符。 該代碼包含\ u202e ,它確實(shí)使代碼的顯示混亂。
for (char c??h = 0; c??h < Character.MAX_VALUE; c??h++)if (Character.isJavaIdentifierPart(c??h) && !Character.isJavaIdentifierStart(c??h))System.out.printf("%04x <%s>%n", (int) c??h, "" + c??h);參考: Vanilla Java博客上來自我們的JCG合作伙伴 Peter Lawrey的隱藏代碼 。
翻譯自: https://www.javacodegeeks.com/2012/09/java-hidden-code.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 电脑win键卡住(电脑卡住win键没反应
- 下一篇: Java中已检查和未检查的异常