Java:InputStream read()返回一个大于127的字节?

我有这段代码:

InputStream is = socket.getInputStream(); int b; while ((b = is.read()) != -1) { System.out.println(b); } 

一个字节,其范围是-128直到+127
但其中一个打印字节是210

这是将读取byte转换为int吗?
(这样negatif byte变成了一个positif int
如果是这样,我可以通过将int转换为byte来做同样的事情(使用OutputStream )吗?

谢谢,
马亭

实际上read返回一个整数..

 public abstract int read() throws IOException 

因此,通过将其存储在int中,它被隐含地转换为无符号字节。

如文件中所述:

从输入流中读取下一个数据字节。 值字节作为int返回,范围为0到255.如果没有字节可用,因为已到达流的末尾,则返回值-1。

想想如果它是一个有符号的字节,则-1不能用作流值的结尾。

对于OutputStream你有

 public abstract void write(int b) throws IOException 

并且如文档实现所述,将传递整数的8个低位。