假如读取的数据为二进制形式的“11111111”,那么int类型的值将会把最后一个字节的8位填充为“11111111”,其他24个高位全部用“0”补充,那么它的值是255,如果返回值是byte类型的话,那么“11111111”的值表示十进制的-1,这时就跟read()读到流的末尾时返回的-1是有冲突的。这个返回值跟强制转换是不一样的。byte b = -1; //这时他的二进制形式是“11111111”;强制转换到int类型的值的话,其他24个高位将会全部用“1”填充,也就是32位的“1”来表示-1。