【发布时间】:2014-04-30 15:16:41
【问题描述】:
我在测试中遇到了这段代码。
byte[] bytes = new byte[] { -1, 1, 0x0 };
InputStream in = new ByteArrayInputStream(bytes);
System.out.println(in.read() + in.read() + in.read());
我希望这段代码返回 0 (-1+1+0) 但它返回 256。
我很想知道。
谁能解释这种行为?
附言
显示第一条语句返回 255。为什么?
【问题讨论】:
-
这是因为
read()方法,将数据(每个1字节)读取为整数(4字节) -
@parsa porahmad 你能详细介绍一下吗?
-
根据java doc
read()方法读取下一个字节并将其作为整数返回。这意味着它在左边的实际值处添加了 3 个字节的空(nul)字节并返回它,所以 -1 将是 255,还不清楚吗? -
但是(对我来说)字节的负值不是预期的行为
-
您可以使用
DataInputStream代替InputStream类,它有一个方法readByte(),它读取一个字节并将其作为字节返回。
标签: java io byte bytearray inputstream