一尘不染

Java中writeByte()的数值限制

java

顾名思义,数据输出流方法writeByte(int)在流上写入一个1字节int。

这有什么限制?是256还是带符号的-128到127?


阅读 557

收藏
2020-12-03

共1个答案

一尘不染

writeByte(int)调用write(int)。的文档write(int)说:

将指定的字节(参数b的低8位)写入基础输出流。

因此,int参数所位于的整数范围无关紧要。两个相差倍数的参数256将导致写入相同的字节。

一种简单的测试方法是使用ByteArrayOutputStream。试试这个程序:

public static void main(String[] args) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(baos);
    dos.writeByte(-128);
    dos.writeByte(-128 + 256);
    System.out.println(Arrays.toString(baos.toByteArray()));
}

输出是[-128, -128]因为相同的内容byte已被写入两次。

2020-12-03