Dos trechos de códigos abaixo, extraídos de um arquivo fonte...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Alternativa B
Vamos analisar a alternativa correta e entender por que ela está certa:
A Alternativa B apresenta a declaração de um método main em Java, que é o ponto de entrada de qualquer programa Java. Este método está corretamente definido como public e static, e aceita um array de Strings como argumento, o que pode ser notado pelo uso de elipses (três pontos), indicando que podem ser passados vários argumentos do tipo String. A declaração segue a assinatura padrão do método main que o Java espera:
public static void main (String ... args) {}
Os conhecimentos necessários para acertar essa questão incluem entender a sintaxe e os conceitos básicos da linguagem Java, como a declaração de métodos, instruções condicionais, a criação de objetos e enumerações.
Quanto às demais alternativas, elas contêm erros:
- Alternativa A: O operador de cast está sendo aplicado de forma errada, tentando converter um boolean (resultado da expressão (b > c)) para String.
- Alternativa C: A palavra-chave final não pode ser usada na declaração de um enum. Em Java, um enum é implicitamente final, e não precisa dessa especificação.
- Alternativa D: A criação de um objeto Boolean está incorreta porque não forneceu um argumento necessário para o construtor. Seria necessário passar um valor booleano ou uma String que possa ser convertida em booleano.
Portanto, a única opção que está sintaticamente correta e compila sem erros é a Alternativa B, que é a declaração correta do método main em Java.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A) Ou remove o cast desnecessário para String ou faz o cast para o retorno e não para a condição: String x = (String) ((b > c) ? "true" : "false");
B) Correto. Tanto faz "String args[]" ou "String... args". Essa reticência é chamado Varargs e pode ser usado desde java 5
C) O compilador pega as entidade A, B e C e as transformam em subclasses de letra. Se fosse permitido que a enum fosse final, não seria possível fazer com que essas subclasses estendessem letra.
D) String é a única classe wrapper do Java que possui construtor vazio. Para Boolean, tem que passar um boolean ou uma String pelo construtor, sendo que qualquer String diferente de "true" é considerado false, incluindo "1".
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo