FileInputStream.read 如何更改我的字节数组?

How can FileInputStream.read change my byte array?

在我为家庭作业编写的程序中,我有一个 FileInputStream,我正在使用流的 read() 方法将字节从中读取到数组中。我在我的程序中根本没有使用 return 值,因为我对此不感兴趣。

但是,我想知道它实际上是如何修改我的数组的?昨晚我通读了许多 Whosebug 帖子,指出 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 将 reference 传递给字节数组 read 方法 by value。这意味着 read 方法无法使您的局部变量 bytes 指向不同的字节数组,但它可以更改您传递给它的字节数组的内容。

(如果 Java 是 "pass by reference",那么一个方法可以使您的局部变量指向不同的对象 - 这在 Java 中是不可能的)