Изменение значений переменных в методах Java [duplicate]
На этот вопрос уже есть ответ:
Является ли Java «передачей по ссылке» или «передачей по значению»? 78 ответовУ меня есть вопрос об изменении значений переменных в методах в Java.
Это мой код:
public class Test {
public static void funk(int a, int[] b) {
b[0] = b[0] * 2;
a = b[0] + 5;
}
public static void main(String[] args) {
int bird = 10;
int[] tiger = {7};
Test.funk(bird, tiger);
}
}
После выполнения методаTest.funk(bird, tiger)
, значение птицы не изменяется - оно остается со значением10
, хотя вfunk()
метод, мы изменили значение с помощьюa = b[0] + 5;
С другой стороны, значение элемента в массиве изменяется, потому что у нас есть выражениеb[0] = b[0] * 2;
Я не понимаю, почему одно меняется, а другое нет? Может ли кто-нибудь объяснить это мне.