Java: BufferedOutputStream里的write(int b)如何理解?

源码如下:

public synchronized void write(int b) throws IOException {
    if (count >= buf.length) {
        flushBuffer();
    }
    buf[count++] = (byte)b;
}

为何写字节要用int类型? int是四个字节,byte是一个字节,为何(byte)b?

喵喵时光机
浏览 1027回答 3
3回答

当年话下

根据这篇博文来看 1个字节占8位,既然实际返回的是byte类型的数据,那么强制类型转换int型截取低8位,对数据也不会造成影响。这是因为在int强制转换为byte型数据时,会产生一个-128~127的有符号字节,而不是read方法返回的0~255的无符号字节。 个人不负责任猜测应该是为了写入有符号字节。 因为 System.out.println((byte) 128); // 输出 -128
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java