Junior — Middle
Os argumentos em Java são passados por valor ou por referência?
sobes.tech IA
Resposta da IA
Em Java, todos os argumentos são passados por valor. Isso significa que, ao chamar um método, o valor do argumento é copiado.
Para tipos primitivos (int, double, etc.), o próprio valor é copiado.
Para objetos, o valor da referência ao objeto é copiado, ou seja, um ponteiro é copiado, mas não o objeto em si. Portanto, dentro do método, é possível alterar o estado do objeto ao qual o parâmetro se refere, mas não é possível alterar a própria referência para que ela aponte para outro objeto.
Exemplo:
void modify(Integer a, MyObject obj) {
a = 10; // copia local é alterada, não afeta o original
obj.field = 20; // o campo do objeto é alterado, isso é visível de fora
}