我正在运行这段代码
char[] str = { 'a', 'b', 'c', 0, 'c', 'c', 'f' };
System.out.print(str);
System.out.println(" adksjfhak");
这将仅打印 "abc"。
而,char[] str = { 'a', 'b', 'c', 0, 'c', 'c', 'f' };
System.out.print(str);
System.out.println("\n adksjfhak");
打印
abc
adksjfhak
为什么打印缓冲区会在空字符(0)处停止?这是否意味着Java只会将字符附加到缓冲区并打印该缓冲区?当然,由于该缓冲区在中间有0,因此它会丢弃字符串的其余部分。
也许我已经回答了自己问题的一部分。但我想更详细地了解这个问题。JVM如何处理这个问题?输出缓冲区在哪里?停止在0处有任何原因吗?另外,为什么添加\n会停止这种行为?
编辑1:使用JDK 1.7,Eclipse 3.8.1和Ubuntu 13.10
编辑2:奇怪的是,这个没有那个问题。https://ideone.com/VwFbRr 编辑3:我在命令行上运行了相同的操作
[bin]$ java com.sakura.C
abcccf adksjfhak
abc ccf adksjfhak
和abc ccf\n adksjfhak
,我不确定问题在哪里。 - Mdev"abcccf adksjfhak"
。 - Christian Tapia