一尘不染

为什么stringbuilder在使用空字符后停止添加元素?

linux

当我使用null字符时'\u0000',stringbuilder将停止添加新元素。

例如:

StringBuilder _stringBuilder = new StringBuilder();
_stringBuilder.append('\u0000');
_stringBuilder.append('a');
System.out.println("."+_stringBuilder+".");

退货

.

我知道不应打印null值(或像打印null字符串值一样打印),但是在这种情况下,为什么stringbuilder无法添加更多元素?

注意:我在ubuntu上使用jdk 1.6.0_38。


阅读 441

收藏
2020-06-07

共1个答案

一尘不染

空字符是一个保留字符,它指示字符串的结尾,因此,如果您打印后跟的内容\u0000,则在此之后将不打印其他任何内容。


为什么在使用null字符后stringbuilder停止添加元素? 它不是真的Java,而是将您的终端视为\u0000字符串的结尾。

有人说,使用Windows可以输出.a.(我没有测试),这是因为Windows终端的工作方式不同于基于Unix的系统终端。我非常确定,如果您在一台OSX机器上运行此代码,您将获得与Linux上相同的输出

2020-06-07