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 中是不可能的)
在我为家庭作业编写的程序中,我有一个 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 中是不可能的)