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.
CCerto
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:
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:
O método equals() retorna um boolean, que é impresso como true (minúsculo).
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
1equals() compara conteúdo
2== compara referência
3boolean imprime true/false
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.