Avatar ·

Java passa parâmetros por valor ou por referência? Desvendando um mito popular

Olá a todos! Sou um desenvolvedor Java iniciante e estou constantemente confuso com uma questão fundamental. Muitos dizem que Java passa objetos por referência e primitivos por valor. Mas eu li que, na verdade, Java sempre passa parâmetros por valor. Tentei escrever um pequeno código para entender, mas ele me deixou ainda mais confuso. Aqui está o exemplo: ```java public class Main { public static void main(String[] args) { int x = 5; changePrimitive(x); System.out.println("After changePrimitive: " + x); // Saída: 5 StringBuilder sb = new StringBuilder("Hello"); changeObject(sb); System.out.println("After changeObject: " + sb); // Saída: Hello World } public static void changePrimitive(int value) { value = 10; } public static void changeObject(StringBuilder builder) { builder.append(" World"); } } ``` No primeiro caso, o primitivo `int` não mudou — isso é compreensível, passagem por valor.