在我写作业的程序中,我有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();
}
答案 0 :(得分:1)
Java通过值将引用传递给字节数组read
方法。这意味着read
方法无法使本地变量bytes
指向不同的字节数组,但它可以更改传递给它的字节数组的内容。
(如果Java是"通过引用"传递,那么一个方法可以使你的局部变量指向另一个对象 - 这在Java中是不可能的)