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