Vir*_*oll 12 java eclipse linux null character
当我使用null字符时'\u0000'
,stringbuilder将停止追加新元素.
例如:
StringBuilder _stringBuilder = new StringBuilder();
_stringBuilder.append('\u0000');
_stringBuilder.append('a');
System.out.println("."+_stringBuilder+".");
Run Code Online (Sandbox Code Playgroud)
回报
.
Run Code Online (Sandbox Code Playgroud)
我知道不应该打印null值(或者打印就像是一个null String值),但在这种情况下,为什么stringbuilder无法添加更多元素?
注意:我在ubuntu上使用jdk 1.6.0_38.
空字符是一个保留字符,表示字符串的结尾,因此如果您打印后面的\u0000
内容,则不会打印任何其他字符.
为什么stringbuilder在使用null字符后停止添加元素?它不是真正的java,它是你的终端,它被视为\u0000
字符串的结尾.
正如有人所说,使用Windows输出可以.a.
(我没有测试它),这是因为Windows终端的工作方式与基于Unix的系统终端不同.我很确定如果你在OSX机器上运行这个代码,你将获得与你在linux上获得的输出相同的输出
您stringBuilder
仍会附加元素,请参阅:
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append('\u0000');
System.out.println(stringBuilder.length()); // prints 1
stringBuilder.append('a');
System.out.println(stringBuilder.length()); // prints 2
Run Code Online (Sandbox Code Playgroud)
我的猜测是你的控制台在\u0000
终止字符后停止打印.另一个控制台可能会以不同方式处理