Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025

ProgramaçãoLinguagens de programação
Código
ce215123
Banca
CESPE / CEBRASPE
Órgão
STM
Ano
2025
Nível
Superior
Cargo
Analista Judiciário - Área: Apoio Especializado - Especialidade: Análise de Sistemas
Julgue o próximo item, relativo a Java, API RESTful e JSON.
A execução do código a seguir, escrito em Java, retornará o resultado True.Imagem associada para resolução da questão
  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”.

Java: comparação de Strings e o método equals

Gabarito: ERRADO. A execução do código não retornará True (com T maiúsculo), pois em Java o resultado de uma comparação de Strings com o método equals() é um valor booleano primitivo, que é impresso como true (minúsculo). O cerne da questão está na distinção entre o tipo primitivo boolean e a classe wrapper Boolean, e na forma como o Java imprime esses valores. Quando você usa System.out.println() para exibir um boolean, o Java imprime true ou false em letras minúsculas. Para imprimir True (com T maiúsculo), seria necessário usar a classe Boolean e manipular a string, ou usar um método como toString() que retorna "true" em minúsculas. Portanto, a afirmação de que o código retornará True está incorreta, a menos que o código faça uma conversão explícita para uma string com a capitalização desejada. Vamos analisar o comportamento típico de um código Java que compara Strings. Suponha que o código na imagem seja algo como:

String a = "Java";
String b = "Java";
System.out.println(a.equals(b));

Nesse caso, a saída seria true (minúsculo), não True. A banca explora exatamente essa pegadinha: o candidato pode se lembrar que equals() retorna true quando as strings são iguais, mas pode esquecer que a saída é em minúsculas. Além disso, a questão pode envolver a comparação de referências com ==, que compara endereços de memória, não o conteúdo. Se o código usasse == para comparar duas Strings criadas com new, o resultado seria false, mesmo que o conteúdo fosse igual. Outro ponto importante é que a questão menciona "retornará o resultado True". Em Java, o método equals() retorna um boolean, que é um tipo primitivo. Quando você imprime um boolean, o Java chama String.valueOf(boolean), que retorna "true" ou "false" em minúsculas. Para obter "True", seria necessário algo como String.valueOf(b).substring(0,1).toUpperCase() + String.valueOf(b).substring(1), o que não é o comportamento padrão. A pegadinha aqui é dupla: primeiro, a capitalização de True versus true; segundo, a possibilidade de o código usar == em vez de equals(). Vamos explorar essas duas armadilhas em detalhes.

A capitalização de True

Em Java, o tipo primitivo boolean só pode ter dois valores: true e false. Quando você imprime um boolean com System.out.println(), a saída é exatamente true ou false, em minúsculas. Não há como o Java imprimir True automaticamente. Para imprimir True, o código precisaria fazer uma conversão explícita, como:

boolean resultado = a.equals(b);
String saida = resultado ? "True" : "False";
System.out.println(saida);

Nesse caso, a saída seria True, mas isso exigiria uma lógica adicional que não é o comportamento padrão de equals().

A comparação com == versus equals()

Outra armadilha comum é usar == para comparar Strings. O operador == compara referências de objetos, não o conteúdo. Por exemplo:

String a = new String("Java");
String b = new String("Java");
System.out.println(a == b); // false, pois são objetos diferentes
System.out.println(a.equals(b)); // true, pois o conteúdo é igual

Se o código na imagem usar ==, o resultado seria false, e a afirmação de que retornará True estaria incorreta por dois motivos: o valor seria false e a capitalização estaria errada.

O que a banca espera

A banca espera que o candidato conheça o comportamento do método equals() e a forma como o Java imprime valores booleanos. A afirmação de que o código retornará True é incorreta porque:

  1. O método equals() retorna um boolean, que é impresso como true (minúsculo).

  2. Se o código usar ==, o resultado pode ser false, dependendo de como as Strings foram criadas.

Portanto, a resposta correta é Errado.

Análise da alternativa

  1. 1equals() compara conteúdo
  2. 2== compara referência
  3. 3boolean imprime true/false
  4. 4True maiúsculo exige conversão
LEVEL · soulevel.com.br

Alternativa C — ❌ Incorreta

A alternativa C afirma que o código retornará True. Isso está incorreto porque, em Java, o método equals() retorna um valor booleano primitivo, que é impresso como true (minúsculo). A capitalização True não é o comportamento padrão do Java. Além disso, se o código usar == para comparar Strings, o resultado pode ser false, dependendo de como os objetos foram criados. Portanto, a afirmação é falsa.

Alternativa E — ✅ Correta ⟵ GABARITO

A alternativa E afirma que o código não retornará True, ou seja, que a afirmação está errada. Isso está correto, pois o Java imprime valores booleanos em minúsculas (true/false), e a capitalização True não é automática. Além disso, a comparação de Strings com == pode resultar em false, dependendo do contexto. Portanto, a resposta correta é Errado.

NÃO CAIA NESSA!

A banca explora duas confusões comuns: (1) a capitalização de True versus true — o Java imprime booleanos em minúsculas; (2) a diferença entre == e equals()== compara referências, equals() compara conteúdo. Se o código usar == com Strings criadas via new, o resultado é false, mesmo com conteúdo igual. Fique atento a essas duas armadilhas na prova. 💡 Dica: Para questões de Java que envolvem comparação de Strings, lembre-se: use equals() para comparar conteúdo e == para comparar referências. E, ao imprimir um boolean, a saída é sempre true ou false em minúsculas. Se a questão pedir True com T maiúsculo, desconfie — provavelmente é uma pegadinha.

Gabarito: letra E

Link permanente: /questoes/ce215123