1. 程式人生 > >java中read()方法返回值解釋

java中read()方法返回值解釋

最近做作業,讀取大資料集,然後做處理分析的專案。當我用fileinputstream流讀取檔案的時候,然後用fileinputstream.read()方法讀取檔案的時候,當我檢視API的時候,發現read()是讀取每個位元組,然後返回一個int型別,有沒有很納悶,讀取的位元組,為什麼返回一個int呢?
FileInputStream.read()讀取一個byte卻返回一個int的原因如下:

FileInputStream.read()返回一個unsigned byte [0 - 255],而java裡面沒有這個型別,所以用int接收。byte的範圍是[-128,127],所以如果read()返回的數在[128,255]的範圍內時,則表示負數,即
(byte)128=-128
(byte)129=-127
(byte)255=-1
所以如果read()返回的是byte的話,那就會有負數。而"返回-1意味著結束",這個資訊量用byte是無法表達的,所以必須用int。