可能重复:
Why does InputStream#read() return an int and not a byte?Issue regarding the return value of the read() function in java?
根据文档 java.io.FileInputStream 类的 read()方法读取输入流的下一个字节,那么为什么它的返回类型是整数,为什么不是字节。
这背后有什么问题吗?
答案 0 :(得分:4)
来自手册:
下一个数据字节,如果到达文件末尾则为-1。
你不能将-1
存储在一个字节中,否则它与有效读数无法区分,所以这就是原因。
答案 1 :(得分:2)
Java没有无符号类型。 read()
返回无符号字节,在Java中表示它的唯一方法是使用int
类型。
byte
值在-128..127
范围内,而无符号字节的值在0..255
范围内。
答案 2 :(得分:0)
它会返回它读取的字符的ASCII
代码,这是一个整数。
因此,此方法的返回类型被视为int。
答案 3 :(得分:0)
FileInputStream的read()方法返回一个int,其中包含读取的字节的字节值。如果read()方法返回-1,则流中不再有要读取的数据,并且可以将其关闭。也就是说,-1作为int值,而不是-1作为字节值。这里有区别!