【发布时间】:2014-05-18 07:57:08
【问题描述】:
我正在运行这段代码并且
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
【问题讨论】:
-
这对我来说很好(JDK 1.7)
-
@Christian 你的意思是在第一种情况下,你得到 abc 和 adksjfhak 吗?
-
分别为我打印出
abc ccf adksjfhak和abc ccf\n adksjfhak。我不确定是什么问题。 -
@sakura 我得到
"abcccf adksjfhak"。 -
有人尝试过使用 Linux 吗?
标签: java char system.out