Pular para o conteúdo principal

Questão de Programação — Java — Quadrix 2025

ProgramaçãoJava
Código
qg595092
Banca
Quadrix
Órgão
CFO
Ano
2025
Nível
Médio
Cargo
Técnico em Tecnologia da Informação
Em relação às linguagens Java e PHP, julgue o item a seguir.Em Java, os tipos de dados primitivos são passados por referência, permitindo que suas mudanças dentro de um método afetem diretamente a variável original.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Passagem por valor e por referência em Java

Gabarito: ERRADO. Em Java, os tipos primitivos são passados por valor — o método recebe uma cópia do valor, e alterações dentro do método não afetam a variável original. A passagem por referência (onde mudanças afetam o original) ocorre com objetos e arrays, que são tipos de referência. A afirmação inverte exatamente esses dois conceitos.

Vamos entender o que isso significa na prática. Quando você chama um método passando uma variável primitiva (como int, double, boolean), o Java copia o valor dessa variável para o parâmetro do método. Dentro do método, você pode modificar esse parâmetro à vontade, mas a variável original do chamador permanece intacta. Isso é a essência da passagem por valor.

Por outro lado, quando você passa um objeto ou um array para um método, o que é copiado é a referência (o endereço de memória) para o objeto, não o objeto em si. Assim, se o método modificar o conteúdo do objeto (por exemplo, alterar um elemento de um array), essa mudança será refletida na variável original, pois ambas apontam para o mesmo local na memória. É por isso que dizemos que objetos são passados por referência (embora tecnicamente seja uma passagem por valor da referência).

A tabela abaixo resume a diferença crucial:

Critério

Passagem por valor

Passagem por referência

O que é copiado

O valor da variável

A referência (endereço) do objeto

Afeta a variável original?

Não

Sim (se o conteúdo do objeto for alterado)

Tipos em Java

Primitivos (int, double, boolean, etc.)

Objetos e arrays

Exemplo

int x = 5;

int[] arr = {1, 2, 3};

A pegadinha da banca é justamente inverter esses conceitos. Ela afirma que primitivos são passados por referência, quando na verdade são passados por valor. O candidato que confunde os dois conceitos cai na armadilha.

Para fixar, veja um exemplo concreto:

public class Teste {
    public static void main(String[] args) {
        int numero = 10;
        alterarPrimitivo(numero);
        System.out.println(numero); // Imprime 10, pois a alteração não afetou o original

        int[] vetor = {1, 2, 3};
        alterarArray(vetor);
        System.out.println(vetor[0]); // Imprime 99, pois a alteração afetou o original
    }

    static void alterarPrimitivo(int valor) {
        valor = 99; // Altera apenas a cópia
    }

    static void alterarArray(int[] arr) {
        arr[0] = 99; // Altera o conteúdo do objeto referenciado
    }
}

No primeiro caso, numero continua 10. No segundo, vetor[0] vira 99. Isso demonstra claramente a diferença.

Guarde essa fronteira: primitivo = por valor; objeto/array = por referência. É exatamente nela que esta questão se decide.

Passagem de parâmetros em Java
  • 1Por valor
    • Tipos primitivos
    • Cópia do valor
    • Não afeta o original
  • 2Por referência
    • Objetos e arrays
    • Cópia do endereço
    • Afeta o original
LEVEL · soulevel.com.br

Item — ❌ Errado

A afirmação está errada porque inverte o mecanismo de passagem de parâmetros em Java. Os tipos primitivos são passados por valor, ou seja, uma cópia do valor é enviada ao método, e alterações feitas dentro dele não afetam a variável original. A passagem por referência, onde mudanças afetam o original, é característica de objetos e arrays, que são tipos de referência. Portanto, a frase "os tipos de dados primitivos são passados por referência" é falsa.

Gabarito: ERRADO

Link permanente: /questoes/qg595092