下面的代码在不同的系统中打印不同的输出。
String s = "hello?vsrd".replace('?', '\0');
System.out.println(s);
当我在我的系统中尝试时(Linux Ubuntu、Netbeans 7.1),它打印:
When I tried the same code in another system (Linux Mint, Netbeans 7.1) it printed as
我确实明白\0
充当java中的字符(通过参考这个答案 https://stackoverflow.com/questions/8623697/is-it-possible-to-add-data-to-a-string-after-adding-0-null显然s.length() prints 10)。并且,不可打印的字符可以像这样打印(框)。但是,为什么这仅在某些系统上发生?是jdk版本还是操作系统的区别?我不需要替代代码,但想知道为什么会这样。
你可以考虑一下String s = "hello\0vsrd";
.
\0
是不可打印的字符。
另外,在C
,字符串传统上以\0
,因为它们没有明确存储它们的长度。有些程序在到达该字符时会停止打印。
Netbeans 控制台确实会打印它,但字体可能没有字形,甚至没有正方形,这可能解释了不同的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)