溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PrintStream和PrintWriter有什么區(qū)別

發(fā)布時間:2021-01-20 15:52:16 來源:億速云 閱讀:216 作者:Leah 欄目:編程語言

這篇文章給大家介紹PrintStream和PrintWriter有什么區(qū)別,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

PrintStream和PrintWriter的API幾乎相同,都能輸出各種形式的數(shù)據(jù),構(gòu)造方法也幾乎相同

PrintStream和PrintWriter有什么區(qū)別

PrintWriter多了個接受Writer參數(shù)

PrintStream和PrintWriter有什么區(qū)別

API比較:

PrintStream和PrintWriter有什么區(qū)別

PrintStream和PrintWriter有什么區(qū)別

那么,它們的區(qū)別究竟在哪里?來自stackflow

PrintStream和PrintWriter有什么區(qū)別

PrintStream和PrintWriter有什么區(qū)別

主要意思就是,2個類的功能基本相同,PrintStream能做的PrintWriter也都能實現(xiàn),并且PrintWriter的功能更為強大。但是由于PrintWriter出現(xiàn)的比較晚,較早的System.out使用的是PrintStream來實現(xiàn)的,所以為了兼容就沒有廢棄PrintStream。

2個類最大的差別是,PrintStream在輸出字符,將字符轉(zhuǎn)換為字節(jié)時采用的是系統(tǒng)默認的編碼格式,這樣當數(shù)據(jù)傳輸另一個平臺,而另一個平臺使用另外一個編碼格式解碼時就會出現(xiàn)問題,存在不可控因素。而PrintWriter可以在傳入Writer時PrintStream和PrintWriter有什么區(qū)別可由程序員指定字符轉(zhuǎn)換為字節(jié)時的編碼格式,這樣兼容性和可控性會更好。

下面這個程式顯示了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();
	}
}
}

關(guān)于PrintStream和PrintWriter有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI