int類型和byte類型的強制類型轉換

今天在讀《Java網絡編程》這本書的第二章 流 時,看到書中有一個地方關於int強制轉換爲byte類型時應注意的地方。這個地方有點細節,不過就應該把這種細節把握住。程序員

狀況是這樣的,講到InputStream的抽象方法read時,說到read返回一個int型,但實際是一個byte型的數據。這點從API也能考證。如圖:編程

那麼問題來了,int佔4個字節,byte佔1個字節,咱們循環讀取的時候將int型數組強制類型轉換成byte時,會發生什麼狀況呢?代碼以下:數組

1個字節佔8位,既然實際返回的是byte類型的數據,那麼強制類型轉換int型截取低8位,對數據也不會形成影響。問題就出如今,若是再從byte型轉換成int型呢?代碼以下:網絡

此時,j輸出爲-106。3d

這是由於在int強制轉換爲byte型數據時,會產生一個-128~127的有符號字節,而不是read方法返回的0~255的無符號字節。這個時候要注意代碼應修改成:blog

一個小問題,重在積累。get

 

這是一個能給程序員加buff的公衆號 網絡編程

相關文章
相關標籤/搜索