Изменение значений переменных в методах 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;

Я не понимаю, почему одно меняется, а другое нет? Может ли кто-нибудь объяснить это мне.

Ответы на вопрос(4)

Ваш ответ на вопрос