read()函数一次读取一个字节,该函数的返回类型为int。我想知道幕后发生了什么,以便该字节作为 int 返回。我对按位运算符一无所知,所以任何人都可以以我容易掌握的方式回答。
最佳答案
这取决于流的实现。在某些情况下,方法实现是在 native 代码中。在其他情况下,逻辑很简单;例如,在 ByteArrayInputStream 中,read() 方法执行以下操作:
public class ByteArrayInputStream extends InputStream {
protected byte buf[];
protected int count;
protected int pos;
...
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
}
换句话说,字节被转换为 0 到 255 范围内的整数,如 javadoc 中所述,并且在逻辑流结束时返回 -1。
buf[pos++] & 0xff
逻辑如下:
buf[pos++]
转换为int
& 0xff
将有符号整数(-128 到 +127)转换为表示为整数的“无符号”字节(0 到 255)。
关于java - java中InputStream中的read函数如何读取一个字节并将其作为int返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44983653/