JAVA中printwriter和out_PrintStream和PrintWriter的区别简介

PrintStream和PrintWriter的API几乎相同,都能输出各种形式的数据,构造方法也几乎相同

caa5bf5b8467889ccfd60afa18611c7e.png

PrintWriter多了个接受Writer参数

12a197f2704487446b7607294ca14f7e.png

API比较:

3cc9d58028a251e75fcf0303b9f399ed.png

d95f1d776d09317e255d6c667142ddeb.png

那么,它们的区别究竟在哪里?来自stackflow

fcdcf3ccc82d9653644f20075c531bb2.png

2d069c8e6a29f5397eccc28d93c952f1.png

主要意思就是,2个类的功能基本相同,PrintStream能做的PrintWriter也都能实现,并且PrintWriter的功能更为强大。但是由于PrintWriter出现的比较晚,较早的System.out使用的是PrintStream来实现的,所以为了兼容就没有废弃PrintStream。

2个类最大的差别是,PrintStream在输出字符,将字符转换为字节时采用的是系统默认的编码格式,这样当数据传输另一个平台,而另一个平台使用另外一个编码格式解码时就会出现问题,存在不可控因素。而PrintWriter可以在传入Writer时

e688999e585e96573e05af6a9a5b10f4.png可由程序员指定字符转换为字节时的编码格式,这样兼容性和可控性会更好。

下面这个程式显示了PrintStream与PrintWriter两个物件在处理相同输出目的时的作法,程式将会在荧幕上显示 "简体中文" 四个字元:

StreamWriterDemo.java

package onlyfun.caterpillar;

import java.io.*;

public class StreamWriterDemo

{

public static void main(String[] args)  {

try  {

byte[] sim = {(byte)0xbc, (byte)0xf2, // 简

(byte)0xcc, (byte)0xe5, // 体

(byte)0xd6, (byte)0xd0, // 中

(byte)0xce, (byte)0xc4

}

;

// 文

InputStreamReader inputStreamReader = new InputStreamReader(new ByteArrayInputStream(sim), "GB2312");

PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(System.out, "GB2312"));

PrintStream printStream =new PrintStream(System.out, true, "GB2312");

int in;

while((in = inputStreamReader.read()) != -1)  {

printWriter.println((char)in);

printStream.println((char)in);

}

inputStreamReader.close();

printWriter.close();

printStream.close();

}

catch(ArrayIndexOutOfBoundsException e)  {

e.printStackTrace();

}

catch(IOException e) {

e.printStackTrace();

}

}

}

总结

以上就是本文关于PrintStream和PrintWriter的区别简介的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值