程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> byte-關於 I/O 中 讀取/寫入時,使用 int型 的問題

byte-關於 I/O 中 讀取/寫入時,使用 int型 的問題

編輯:編程綜合問答
關於 I/O 中 讀取/寫入時,使用 int型 的問題

.
為什麼讀取/寫入單個字節/字符,返回值/輸入值都是 int型,為什麼不用 byte/char,如下方法:
.
InputStream:

 abstract  int read() 
          從輸入流中讀取數據的下一個字節。 
從輸入流中讀取數據的下一個字節。返回 0 到 255 范圍內的 int 字節值。如果因為已經到達流末尾而沒有可用的字節,則返回值 -1。

.
OutputStream:

abstract  void write(int b) 
      將指定的字節寫入此輸出流。 

將指定的字節寫入此輸出流。write 的常規協定是:向輸出流寫入一個字節。要寫入的字節是參數 b 的八個低位。b 的 24 個高位將被忽略。 

.
Reader:

int read() 
      讀取單個字符。 
返回:
作為整數讀取的字符,范圍在 0 到 65535 之間 (0x00-0xffff),如果已到達流的末尾,則返回 -1 

.
Writer:

void write(int c) 
      寫入單個字符。 
寫入單個字符。要寫入的字符包含在給定整數值的 16 個低位中,16 高位被忽略。 
參數:
c - 指定要寫入字符的 int。 

.


.
而多個字節/字符的讀取/寫入,都是用的byte/char數組,如下方法:
.
Inputstream:

 int read(byte[] b) 
      從輸入流中讀取一定數量的字節,並將其存儲在緩沖區數組 b 中。

 int read(byte[] b, int off, int len) 
      將輸入流中最多 len 個數據字節讀入 byte 數組。 

.
OutputStream:

 void write(byte[] b) 
      將 b.length 個字節從指定的 byte 數組寫入此輸出流。 

 void write(byte[] b, int off, int len) 
      將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此輸出流。 

.
Reader:

int read(char[] cbuf) 
      將字符讀入數組。 

abstract  int read(char[] cbuf, int off, int len) 
      將字符讀入數組的某一部分。 

.
Writer:

void write(char[] cbuf) 
      寫入字符數組。 

abstract  void write(char[] cbuf, int off, int len) 
      寫入字符數組的某一部分。 

.
最後推廣一下正版問答地址:http://stackoverflow.com/
.

最佳回答:


針對一個來說吧..
jvm默認處理數字是int的

比如

byte a =1
byte b = 2 ;

byte c = 1+2 ;

其實java處理的時候..是把 1,2向上轉型成為int..然後加後轉回為byte..

因為早期都是32位的機器..一次處理數據的最小單元是32位也就是一個int..

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved