从 API 中,方法 write(int byte) 应该采用一个表示字节的 int,因此当 EOF 出现时,它可以返回 -1。但是,可以执行以下操作:
FileOutputStream fi = new FileOutputStream(file);
fi.write(100000);
我预计不会编译,因为数字超出了字节范围。JVM如何准确解释它?提前致谢。
将指定字节写入此输出流。写入的一般约定是将一个字节写入输出流。要写入的字节是参数 b 的 8 个低位。b 的高 24 位被忽略。
强调我的。
请注意,该方法需要一个int
. 并且由于100000是一个有效的整数文字,所以它没有被编译的意义。
你在哪里读到关于 EOF 和 -1 的那部分?
该方法只写入一个 byte,由于某种原因,它作为 int 传递。
将指定字节写入此输出流。写入的一般约定是将一个字节写入输出流。要写入的字节是参数 b 的 8 个低位。b 的高 24 位被忽略。
我预计不会编译,因为数字超出了字节范围
不,这将编译好。编译器只是寻找一个int
. (Along
不会编译)。
除了最低 8 位之外的所有内容都将被忽略。