为什么InputStream#read()返回int而不是byte?
Bal*_*usC 54
因为a byte只能保持-128直到127,而它应该返回0到255(当没有字节时返回-1(即EOF)).即使它返回byte,也没有代表EOF的余地.
一个更有趣的问题是它为什么不回归short.
Edw*_*uck 17
它返回一个int,因为当无法再读取流时,它返回-1.
如果它返回一个字节,则无法返回-1表示缺少输入,因为-1是一个有效字节.此外,由于Java只处理带符号的字节,因此无法返回高于127或低于-128的值.
很多时候,当一个人正在读取文件时,您需要处理代码的无符号字节.要获得介于128和255之间的值,可以使用short,但通过使用int,您可以更有效地将内存寄存器与数据总线对齐.因此,使用int并不会真正丢失任何信息,您可能会获得一些性能.唯一的缺点是内存的成本,但很可能你不会长时间停留在那个int上(因为你将处理它并将其转换为char或byte []).
| 归档时间: |
|
| 查看次数: |
10069 次 |
| 最近记录: |