System.out的Print()vs Write()方法

时间:2017-03-31 04:48:47

标签: java printstream

PrintStream#print(char)州的Javadoc

  

打印一个角色。该字符被转换为一个或多个字节   根据平台的默认字符编码,以及这些   字节的写入方式与write(int)方法完全相同。

所以这意味着下面的代码应该打印2 'a'然而打印一个'a'而不是两个。

System.out.print('a');
System.out.write('a');

有人可以帮助我理解这种行为

1 个答案:

答案 0 :(得分:2)

根据PrintStream#write

java docs
  

将指定的字节写入此流。如果该字节是换行符和   启用自动刷新,然后将调用flush方法。

所以只需致电flush

System.out.flush();之后致电System.out.write('a');

<强>替代地

正如文档建议的那样,将输出流设置为autoflushable,然后在程序结束时写一个新的行char。实际上,如果查看源代码System class,PrintStream对象System.out已设置为可自动清除。所以,你需要做的只是在最后打印一个新的线条字符。不需要打电话。

System.out.print('a');
System.out.write('a');
System.out.write('\n');