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

时间:2016-11-20 02:47:23

标签: java arrays fileinputstream

在我写作业的程序中,我有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();
}

1 个答案:

答案 0 :(得分:1)

Java通过值将引用传递给字节数组read方法。这意味着read方法无法使本地变量bytes指向不同的字节数组,但它可以更改传递给它的字节数组的内容。

(如果Java是"通过引用"传递,那么一个方法可以使你的局部变量指向另一个对象 - 这在Java中是不可能的)