从API开始,方法write(int byte)应该采用一个表示字节的int,这样当EOF出现时它可以返回-1。 但是可以做以下事情:
FileOutputStream fi = new FileOutputStream(file);
fi.write(100000);
我预计不会编译,因为数字超出了字节范围。 JVM如何解释它? 提前谢谢。
答案 0 :(得分:5)
来自OutputStream.write(int)
doc:
将指定的字节写入此输出流。写入的一般合同是将一个字节写入输出流。要写入的字节是参数b的八个低位。 b 的24个高位被忽略。
强调我的。
请注意,该方法需要int
。由于 100000 是一个有效的整数字面值,因此无需编译。
答案 1 :(得分:1)
你在哪里读到有关EOF和-1的部分?
method just writes one byte,由于某种原因作为int传递。
将指定的字节写入此输出流。写入的一般合同是将一个字节写入输出流。要写入的字节是参数b的八个低位。 b的24个高位被忽略。
我预计不会编译,因为数字超出了字节范围
不,这样编译好了。编译器只查找int
。 (A long
无法编译。)
除了最低8位之外的所有内容都将被忽略。