Alterando os valores das variáveis nos métodos, Java [duplicado]

Esta pergunta já tem uma resposta aqui:

Java é "passagem por referência" ou "passagem por valor"? 78 respostas

enho uma pergunta sobre como alterar os valores de variáveis nos métodos em Jav

Este é o meu código:

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);
    }
}

Depois da execução do métodoTest.funk(bird, tiger), o valor do pássaro não é alterado - ele permanece com o valor10, mesmo que nofunk() alteramos o valor coma = b[0] + 5;

Por outro lado, o valor do elemento na matriz muda, porque temos a instruçãob[0] = b[0] * 2;

Não entendo por que uma coisa muda e a outra não? Alguém poderia explicar isso para mim.

questionAnswers(4)

yourAnswerToTheQuestion