sak*_*ura 6 java char system.out
我正在运行此代码和
char[] str = { 'a', 'b', 'c', 0, 'c', 'c', 'f' };
System.out.print(str);
System.out.println(" adksjfhak");
Run Code Online (Sandbox Code Playgroud)
这打印只是"abc".而,
char[] str = { 'a', 'b', 'c', 0, 'c', 'c', 'f' };
System.out.print(str);
System.out.println("\n adksjfhak");
Run Code Online (Sandbox Code Playgroud)
版画
abc
adksjfhak
Run Code Online (Sandbox Code Playgroud)
为什么打印缓冲区停止为null(0)字符?这是否意味着Java只是保持追加字符缓冲并打印缓冲区?当然,由于缓冲区之间有0,它会丢弃其余的字符串.
可能我已经回答了我自己的一部分问题.但我想知道更多关于此的细节.HOW 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
Run Code Online (Sandbox Code Playgroud)
最有可能的是,在这两种情况下,所有内容都会“打印”到操作系统,但在第一种情况下,操作系统或 shell 将“0”字符作为不显示该行其余部分的信号。在第一种情况下,两个字符串出现在同一行,因此第二个字符串也会被抑制。在第二种情况下,第二个字符串位于新行,因此会显示。
| 归档时间: |
|
| 查看次数: |
25449 次 |
| 最近记录: |