Sobes.tech
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.