byte型的b是255,那么是11111111
提升为int型的,为:11111111 11111111 11111111 11111111
在与上0xff即:
11111111 11111111 11111111 11111111
&00000000 00000000 00000000 11111111
——————————————————————————————-
00000000 00000000 00000000 11111111
这样一来,即可以保留原字节数据不变,又可以避免-1的出现。而取数据的时候,就会强转只取最低8位的源数据。
总结:参见毕老师笔记
结论:
字节流的读一个字节的read方法为什么返回值类型不是byte,而是int。
因为有可能会读到连续8个二进制1的情况,8个二进制1对应的十进制是-1.
那么就会数据还没有读完,就结束的情况。因为我们判断读取结束是通过结尾标记-1来确定的。
所以,为了避免这种情况将读到的字节进行int类型的提升。
并在保留原字节数据的情况前面了补了24个0,变成了int类型的数值。
而在写入数据时,只写该int类型数据的最低8位。 |