//爲什麼read()方法返回的是int類型而不是byte
1個字節8位,(byte)
4個字節32位,(int)
byte -1 —>int -1(將byte提升爲int)
byte 是1一個字節,即8位,如果取到連續11111111 (8個1)
爲了避免讀到連續8個1(就是-1)和定義的結束標記-1相同(read()返回-1就是讀到末尾)。
所以在保留11111111的基礎上,在轉成int類型時,前面24位補0而不補1.
如果是補1
11111111 11111111 11111111 11111111
不還是-1?是-1的原因是因爲前面24位補的是1,只要在前面補0,
既可以保留原字節數據不變(最低8位),又可以避免-1的出現。
11111111 11111111 11111111 11111111
&00000000 00000000 00000000 11111111
00000000 00000000 00000000 11111111
//那提升爲int 讀一個字節不就變成4個字節了麼?那往外寫的時候大小不就變成原來數據的4倍了麼?
答:read 方法在提升的同時保證了不出現-1的情況,但是write有一個強轉動作,就是取最低8位,
所以說寫出去的還是有效數據,保證原數據沒有變化!