Junior — Middle
De que forma é feita a passagem de variáveis por referência ao chamar métodos?
sobes.tech IA
Resposta da IA
Em Java, a passagem de parâmetros para métodos ocorre sempre por valor, ou seja, uma cópia do valor da variável é feita. No entanto, se um objeto é passado, é copiada a referência ao objeto, não o objeto em si. Isto é frequentemente chamado de "passagem por referência", mas na verdade é uma cópia da referência que é passada.
Isto significa que dentro do método é possível alterar o estado do objeto ao qual a referência aponta, mas não é possível alterar a própria referência para apontar para outro objeto.
Exemplo:
class MyObject {
int value;
}
public class Example {
public static void modifyObject(MyObject obj) {
obj.value = 10; // altera o estado do objeto
obj = new MyObject(); // altera a cópia local da referência
obj.value = 20; // esta alteração não afetará o objeto fora do método
}
public static void main(String[] args) {
MyObject myObj = new MyObject();
myObj.value = 5;
modifyObject(myObj);
System.out.println(myObj.value); // irá imprimir 10
}
}
Aqui, é possível ver que a alteração do estado do objeto dentro do método é mantida, mas a reatribuição da referência não.