PrintStream#print(char)州的Javadoc
打印一个角色。该字符被转换为一个或多个字节 根据平台的默认字符编码,以及这些 字节的写入方式与write(int)方法完全相同。
所以这意味着下面的代码应该打印2 'a'然而打印一个'a'而不是两个。
System.out.print('a');
System.out.write('a');
有人可以帮助我理解这种行为
答案 0 :(得分:2)
根据PrintStream#write
将指定的字节写入此流。如果该字节是换行符和 启用自动刷新,然后将调用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');