为什么返回read()的类型是整数?

时间:2012-02-24 11:43:20

标签: java

  

可能重复:
  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()方法读取输入流的下一个字节,那么为什么它的返回类型是整数,为什么不是字节。

这背后有什么问题吗?

4 个答案:

答案 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作为字节值。这里有区别!