В программе, которую я пишу для домашней работы, у меня есть FileInputStream
, который я читаю байты из массива, используя метод потока read()
. Я не использую возвращаемое значение вообще в своей программе, так как меня это не интересует.Как 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();
}
Вызов по значению не означает, что объект может» t быть мутированным. [Этот ответ] (http://stackoverflow.com/a/40523/3824919) объясняет это. – Tom
Переменные байты на самом деле являются ссылкой на объект массива. Когда вы передаете массив методу, вы копируете ссылку, а не фактический массив, на который ссылается ссылка. –