System.in & System.out & System.err

從這篇連結擷取自己想要的部分: https://blog.yslifes.com/archives/821


Java的輸出及輸入控制大都定義在java.io.*裡,

Java IO大概分成2大類:

1. byte的讀取與寫出,可讀取寫入二位元binary的資料;
2. char的讀取與寫入,提供文字的讀取與寫入。


System類別並不屬於java.io的套件,而是屬於java.lang套件,在使用時預設載入,所以並不需要特別去import它。

1. System.in --> 通常是指鍵盤的輸入,為java.io.InputStream類別

System.in:
System.in為InputStream串流類別,可直接使用:
- read(byte[])來取出輸入內容
- read()取出每次輸入的ascii數字(再轉換成字元char)
- 利用BufferedReader來直接讀取一行內容等等

p.s. 鍵盤的輸入完成預設為enter鍵,也就是\r\n。

(char)read():
因對於中文字部份無法判別,需要先把讀入的字元全部放進一個char 陣列,再利用new String(char[])來使中文字正常
(p.s 請見連結內的example code: 連結: https://blog.yslifes.com/archives/821)


2. System.out --> 通常是指Console螢幕輸出,為java.io.PrintStream類別


3. System.err --> 同System.out,主要是用在系統出錯時輸出至Console螢幕
(p.s. Java本身在處理字串時均是使用utf8 uncode的方式,不過在Windows的Console(螢幕)字串的顯示與輸入都是使用ISO-8859-1編碼,所以需要先把字串轉換成Big5再行輸出,在Linux上則不會有這種問題。)



文章參考來源: https://blog.yslifes.com/archives/821



留言

這個網誌中的熱門文章

如何在macbook pro上安裝Eclipse、tomcat、mariadb、MySQLWorkbench?

求1000和495的最大公因數

如何在mac版的Eclipse workspace中找到.metadata?