0

从 API 中,方法 write(int byte) 应该采用一个表示字节的 int,因此当 EOF 出现时,它可以返回 -1。但是,可以执行以下操作:

FileOutputStream fi = new FileOutputStream(file);
    fi.write(100000);

我预计不会编译,因为数字超出了字节范围。JVM如何准确解释它?提前致谢。

4

2 回答 2

5

OutputStream.write(int)文档:

将指定字节写入此输出流。写入的一般约定是将一个字节写入输出流。要写入的字节是参数 b 的 8 个低位。b 的高 24 位被忽略。

强调我的。

请注意,该方法需要一个int. 并且由于100000是一个有效的整数文字,所以它没有被编译的意义。

于 2013-07-28T08:49:51.107 回答
1

你在哪里读到关于 EOF 和 -1 的那部分?

方法只写入一个 byte,由于某种原因,它作为 int 传递。

将指定字节写入此输出流。写入的一般约定是将一个字节写入输出流。要写入的字节是参数 b 的 8 个低位。b 的高 24 位被忽略。


我预计不会编译,因为数字超出了字节范围

不,这将编译好。编译器只是寻找一个int. (Along不会编译)。

除了最低 8 位之外的所有内容都将被忽略。

于 2013-07-28T08:50:09.067 回答