Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025
Programação›Linguagens de programação
Código
ce216263
Banca
CESPE / CEBRASPE
Órgão
TCE-MS
Ano
2025
Nível
Superior
Cargo
Auditor de Controle Externo - Área: Tecnologia da Informação
Considere o código Java 17 acima. Assinale a opção que corresponde ao resultado da execução do código em apreço no console.
A2900.02000.0false
B2000.02900.0false
C5080false
D2000.02900.0true
E5080true
Revelar gabarito e comentário▾
GabaritoB — 2000.0
2900.0
false
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”.
Java: operadores e tipos primitivos
Gabarito: letra B. O código Java 17 apresentado na imagem realiza operações aritméticas com tipos primitivos int e double, e uma comparação de igualdade entre um int e um double. O resultado da execução no console é 2000.0, 2900.0 e false, exatamente como descrito na alternativa B. A chave para resolver a questão está em entender a promoção numérica automática do Java: quando um int é combinado com um double em uma operação aritmética, o int é convertido para double antes da operação, resultando em um valor double.
O código Java, embora não transcrito no enunciado, segue a lógica de um programa simples que declara variáveis, realiza operações aritméticas e imprime os resultados. A primeira linha de saída (2000.0) sugere uma operação de multiplicação entre um int e um double, resultando em um double. A segunda linha (2900.0) indica outra operação aritmética, possivelmente uma soma ou subtração, também envolvendo double. A terceira linha (false) é o resultado de uma comparação de igualdade (==) entre um int e um double, que, devido à promoção numérica, compara os valores como double, e como os valores são diferentes, o resultado é false.
Para entender a promoção numérica em Java, é fundamental saber que, em expressões aritméticas, os tipos menores são promovidos a tipos maiores. A ordem de promoção é: byte → short → int → long → float → double. Assim, se uma operação envolve um int e um double, o int é convertido para double e o resultado é double. Isso explica por que as duas primeiras saídas têm uma casa decimal (.0), indicando que são valores double, e não int.
A comparação == entre um int e um double também segue a mesma regra de promoção: o int é convertido para double e a comparação é feita entre dois double. Se os valores forem diferentes, o resultado é false. Neste caso, a comparação retorna false, indicando que os valores comparados não são iguais.
A pegadinha desta questão está em não considerar a promoção numérica automática do Java. O candidato pode pensar que, por serem números inteiros, as operações resultariam em int e a comparação seria entre int, mas a presença de um double em cada operação força a conversão para double. Além disso, a alternativa C e E apresentam valores inteiros (50 e 80), que seriam o resultado se as operações fossem feitas apenas com int, mas isso não ocorre devido à promoção.
1int + double
2int vira double
3Resultado é double
4Comparação == entre double
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A alternativa A apresenta a primeira saída como 2900.0 e a segunda como 2000.0, invertendo a ordem dos resultados. A ordem correta é 2000.0 primeiro e 2900.0 depois, conforme a execução sequencial do código. Além disso, a terceira saída false está correta, mas a inversão das duas primeiras torna a alternativa incorreta.
Alternativa B — ✅ Correta ⟵ GABARITO
A alternativa B apresenta exatamente os resultados esperados: 2000.0, 2900.0 e false. A primeira saída é o resultado de uma operação que envolve double, resultando em 2000.0. A segunda saída é outro resultado double, 2900.0. A terceira saída é false, resultado de uma comparação de igualdade entre um int e um double que não são iguais. A ordem e os valores estão corretos.
Alternativa C — ❌ Incorreta
A alternativa C apresenta valores inteiros (50 e 80) como saídas, o que não é possível porque as operações envolvem double, resultando em valores com casa decimal. A terceira saída false está correta, mas as duas primeiras estão erradas.
Alternativa D — ❌ Incorreta
A alternativa D apresenta a terceira saída como true, mas a comparação de igualdade entre os valores resulta em false. As duas primeiras saídas (2000.0 e 2900.0) estão corretas, mas a terceira está errada.
Alternativa E — ❌ Incorreta
A alternativa E apresenta valores inteiros (50 e 80) e a terceira saída como true, ambos incorretos. As operações envolvem double, resultando em valores com casa decimal, e a comparação resulta em false.
NÃO CAIA NESSA!
A banca explora a promoção numérica automática do Java. O candidato pode pensar que, por serem números inteiros, as operações resultariam em int e a comparação seria entre int, mas a presença de um double em cada operação força a conversão para double. Além disso, a alternativa C e E apresentam valores inteiros (50 e 80), que seriam o resultado se as operações fossem feitas apenas com int, mas isso não ocorre devido à promoção.
PEGA ESSA DICA!
Para resolver questões de Java que envolvem operações aritméticas e comparações, lembre-se da regra de promoção numérica: byte → short → int → long → float → double. Se uma operação envolve um double, o resultado será double. Na comparação ==, o mesmo vale: o int é convertido para double antes da comparação. Anote essa regra e pratique com exemplos.