A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁梦希 金牌黑马   /  2013-3-30 20:19  /  1111 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 袁梦希 于 2013-3-31 01:56 编辑

PrintWriter实现了PrintStream的所有的print方法,
还有关于自动刷新的问题,他们到底有什么区别?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

倒序浏览
我认为
PrintStream 为其他输出流添加了功能使它们能够方便地打印各种数据值表示形式
在需要写入字符时在PrintWriter

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

回复 使用道具 举报
一个是字节打印流,一个是字符的,你可以联想到字流/字符输入输出流,java不像其他语言,IO流的装饰类太多,都是有特定功能的.
回复 使用道具 举报
陈圳 发表于 2013-3-30 20:27
一个是字节打印流,一个是字符的,你可以联想到字流/字符输入输出流,java不像其他语言,IO流的装饰类太多,都是 ...

我想知道他刷新的问题,最好说的全面一点
回复 使用道具 举报
PrintStream是OutputStream的子类,PrintWriter是Writer的子类,两者处于对等的位置上,所以它们的API是非常相似的。PrintWriter实现了PritnStream的所有print方法。对于PrintStream,所有println方法都在内部调用相应的print方法,比如println(char x)的方法体就是调用print(x);再写入一个平台相关的换行符。PrintStream构建时会在内部new一个BufferedWriter,所有print方法都在内部调用这个Writer的write方法(write(String)或write(char[]))——对于print(char[]),直接调用write(char[]);对于其他的print方法,先用String.valueOf获得参数的字符串表示,然后调用write(String)。
对于PrintWriter,所有println方法也都在内部调用print方法,print方法调用write方法。传入OutputStream时,PrintWriter会在内部构造一个BufferedWriter;而传入Writer时,PrintStream内部直接使用该Writer,此时PrintWriter是否进行了缓冲全看该Writer。
所以,对于使用print系列方法的场合,二者没什么区别。
但是,PrintStream是字节流,它有处理raw byte的方法,write(int)和write(byte[],int,int);PrintWriter是字符流,它没有处理raw byte的方法。PrintStream和PrintWriter的auto flushing机制有点不同,前者在输出byte数组、调用println方法、输出换行符或者byte值10(即\n)时自动调用flush方法,后者仅在调用println方法时发生auto flushing。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马