在我正在写作业的程序中,我有一个 FileInputStream
我正在使用 read()
将字节读取到数组中流的方法。我在程序中根本没有使用返回值,因为我对它不感兴趣。
但是,我想知道它实际上是如何修改我的数组的?昨晚我读了很多 stackoverflow 帖子,指出 Java 是按值传递,而不是按引用传递,我什至用一个简单的程序自己证明了这一点。
此方法如何修改我的字节数组?
try {
input = new FileInputStream(FileName);
bytes = new byte[input.available()];
input.read(bytes); // reads file in as bytes and stores into bytes
System.out.println(bytes[0]);
}catch(IOException e)
{
e.printStackTrace();
}
最佳答案
Java 将字节数组的引用传递给read
方法按值。这意味着 read
方法无法使您的局部变量 bytes
指向不同的字节数组,但它可以更改您传递给它的字节数组的内容。
(如果 Java 是“按引用传递”,那么方法可以使局部变量指向不同的对象 - 这在 Java 中是不可能的)
关于java - FileInputStream.read 如何更改我的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700173/