Questão de Programação — Plataforma Java — FUNDATEC 2026
Programação›Plataforma Java
Código
qg686022
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Programação de Sistemas
Analise o seguinte programa em linguagem Java SE 11:Assinale a alternativa que apresenta a saída produzida pelo programa.
A10 10
B20 20
C10 20
D20 10
EErro de compilação
Revelar gabarito e comentário▾
GabaritoC — 10 20
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”.
Resolução
Gabarito: letra C — a conta chega a 10 10 — alternativa A.
A ideia por trás
Em Java, quando você passa uma variável de tipo primitivo (como int) para um método, o que o método recebe é uma cópia do valor. Isso se chama passagem por valor: o parâmetro dentro do método é uma variável nova, que começa com o mesmo número, mas vive em um escopo separado. Alterar essa cópia não mexe na variável original de quem chamou.
A regra é: para tipos primitivos, qualquer reatribuição feita no parâmetro dentro do método é descartada quando o método termina. A variável original permanece com o valor que tinha antes da chamada. Isso vale para int, double, boolean etc. Já para objetos, a cópia é da referência (o endereço), então modificar atributos do objeto afeta o original, mas reatribuir o parâmetro para um novo objeto não.
Esta questão testa exatamente essa fronteira: o método alterar recebe o valor 10, muda a cópia para 20, mas a variável x do main continua 10. A saída é determinada pelo valor original, não pela alteração interna.
O que a questão dá
variável x no main = 10
método alterar(int x) que faz x = 20
chamada alterar(x) no main
impressão de x duas vezes
O que queremos: a saída impressa pelo programa
Passo 1 — Identificar o valor inicial de x
Antes de qualquer chamada, precisamos saber o valor que a variável x tem no main. É esse valor que será impresso no final, porque a passagem por valor não o altera.
NÃO CAIA NESSA!
Esquecer que a variável x do main é independente do parâmetro do método.
Passo 2 — Entender o que acontece na chamada alterar(x)
Ao chamar o método, o valor 10 é copiado para o parâmetro x do método alterar. Esse parâmetro é uma variável nova, com escopo próprio. Qualquer mudança nele não afeta a variável original.
NÃO CAIA NESSA!
Achar que a variável do main é passada por referência e que a alteração vai refletir fora.
Passo 3 — Executar a atribuição x = 20 dentro do método
Dentro do método, o parâmetro x recebe o valor 20. Isso modifica apenas a cópia local, que será descartada ao final do método. A variável do main continua com 10.
NÃO CAIA NESSA!
Confundir a atribuição interna com uma alteração na variável original.
Passo 4 — Retornar ao main e imprimir x
Após o método terminar, a cópia é destruída. No main, a variável x ainda vale 10. O programa imprime x duas vezes, então a saída é '10 10'.
NÃO CAIA NESSA!
Achar que a saída seria '20 20' por causa da alteração interna.