【发布时间】:2016-11-20 02:47:22
【问题描述】:
在我为家庭作业编写的程序中,我有一个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();
}
【问题讨论】:
-
按值调用并不意味着对象不能被变异。 This answer 解释了这一点。
-
变量 bytes 实际上是对数组对象的引用。当您将数组传递给方法时,您复制的是引用而不是引用所引用的实际数组。
标签: java arrays fileinputstream