Pular para o conteúdo principal

Questão de Programação — Plataforma Java — FUNDATEC 2026

ProgramaçãoPlataforma 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:Imagem associada para resolução da questãoAssinale a alternativa que apresenta a saída produzida pelo programa.
  1. A10 10
  2. B20 20
  3. C10 20
  4. D20 10
  5. 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.

x=10x = \boxed{10}
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.

para^metroxdomeˊtodo=10 (coˊpia)parâmetro x do método = \boxed{10\ (\text{c}ó\text{pia})}
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.

para^metroxdomeˊtodo=20parâmetro x do método = \boxed{20}
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'.

10 10\boxed{10\ 10}
NÃO CAIA NESSA!

Achar que a saída seria '20 20' por causa da alteração interna.

Resposta: 10 10 — alternativa A

Link permanente: /questoes/qg686022