为了账号安全,请及时绑定邮箱和手机立即绑定

关于字符流的输出问题

有一个问题:

while((c=isr.read(buf, 0, buf.length))!=-1){

String s = new String(buf, 0, c);

System.out.println(s);

为什么要把字符数组转换成字符串输出,这跟直接输出字符数组的结过时一样的?

正在回答

3 回答

跟直接输出字符数组的结果是不一样的。至于为什么要转换成字符串输出个人认为是因为是如果是你单单拿字符数组来输出的时候由于字符数据之间没有明显的分隔的界限,导致输出的字符是不一致的。而c是返回的是读到的字符的个数,用String来转换成所读到的字符来输出就可以很明显的分隔出来。以上只是个人愚见,有些地方说的可能不太清楚,欢迎来指正与讨论

0 回复 有任何疑惑可以回复我~
#1

模棱0 提问者

非常感谢!
2016-08-08 回复 有任何疑惑可以回复我~

当然不一样啦,数组对象并没有实现toString()方法,当你直接把字节数组放到print中打印时,打印的是一个个的地址(应该是指向数组内对象的地址)。如果想直接打印,可以使用Arrays工具类,利用工具类中的toString()方法,Arrays.toString(c),但是这样写其实同样是把字节数组转化成了string,具体可以去看下api中的说明

0 回复 有任何疑惑可以回复我~
#1

charsandrew

写错了,上面应该是Arrays.toString(buf)
2016-07-19 回复 有任何疑惑可以回复我~

字符串就是字符数组

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
文件传输基础——Java IO流
  • 参与学习       133651    人
  • 解答问题       1030    个

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

进入课程

关于字符流的输出问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信