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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lovecx24 中级黑马   /  2013-12-1 14:33  /  1263 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

jdk文档中说PrintStream用来输出字节,PrintWriter用来输出字符,而且特别强调 The PrintWriter class should be used in situations that require writing characters rather than bytes. 但是为什么System.out却使用了PrintStream而不是PrintWriter?难道控制台输出就不是字符了吗

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
最底层的是字节,字符是为了满足纯文本文件的需求而产生的。所以无论是字节,还是字符,最后都是字节,而System.out作为控制台输出,即要输出字节,又要输出字符,所以用的是PrintStream,而不是PrintWriter
回复 使用道具 举报
在内存中,如'a''b''c''1'等都是以字节存储,如果以字符输出,就会出现乱码等问题(一个字包括2个字节)。

评分

参与人数 1黑马币 +6 收起 理由
狼王 + 6 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 cuilitang 于 2013-12-1 22:36 编辑

直接在本地控制台输出使用平台默认编码,不牵扯到编码问题。PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式.方便,永不抛出异常。
但是如果是web程序就得用PrintWriter了,你的告诉目标主机你的编码是什么(utf-8、GBK、iso8859-1等等),以方便对方解码,不然就乱码啦

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马