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 respostasenho 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.