Analise o seguinte trecho de código Java:import java.util.Ar...

Próximas questões
Com base no mesmo assunto
Q2171694 Programação

Analise o seguinte trecho de código Java:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class ArrayLista {

        public static void main(String[] args) {

                 List<String> str = Arrays.asList("c", "a", "b");

                 str.sort();

                 System.out.println(str.toString());

         }

}


O que será escrito na saída padrão após a execução?

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E

Fundamento decisivo: O critério eliminatório é a inexistência de código Java válido no trecho apresentado: List<String><string> str = Arrays.asList("c", "a", "b"); contém marcação espúria e str.sort(); não corresponde à chamada válida do método. Sem compilação, não há execução nem saída padrão, o que leva à alternativa E.

Tema central: erro de compilação em Java
Análise das alternativas
A
Errada
Está errada porque pressupõe execução normal do programa e manutenção da ordem original, mas o trecho apresentado não compila. O resultado [c, a, b] só seria possível após execução válida, o que não ocorre.
B
Errada
Está errada porque [a, b, c] dependeria de um código compilável com ordenação correta antes da impressão. Pela base, a compilação falha antes de qualquer ordenação efetiva.
C
Errada
Está errada porque associa a saída a uma representação com aspas simples, que não corresponde ao resultado indicado pela base. Além disso, o programa não chega a executar.
D
Errada
Está errada porque também pressupõe execução inexistente e atribui aspas duplas aos elementos da lista, o que não corresponde à impressão indicada. O código sequer ultrapassa a compilação.
E
Certa
A alternativa E está correta porque a resolução deve parar na etapa de compilação. O código literal exibido já é inválido na declaração List<String><string> str = Arrays.asList("c", "a", "b");, pois <string> não integra uma declaração Java válida naquele ponto. Além disso, str.sort(); reforça a inviabilidade de compilação, já que List.sort exige um Comparator. Como a unidade não compila, System.out.println não é executado e não há saída impressa.
Pegadinha da questão
A banca explora a tendência de ignorar o código literal apresentado e resolver pela intenção aparente de ordenar a lista, quando o critério correto era verificar primeiro se o trecho compila.
Dica para questões semelhantes
  • Antes de calcular qualquer saída, valide se o código apresentado é sintaticamente e semanticamente compilável.
  • Se houver tokens estranhos no trecho, como marcação inserida no meio da declaração, trate isso como elemento decisivo enquanto o enunciado exigir análise do código literal.
  • Em Java, só faz sentido discutir a saída de System.out.println depois de confirmar que as chamadas de método correspondem a assinaturas válidas.

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

Aslist retorna uma lista imutável

O método sort precisa que seja fornecido um Comparator ou NULL como parâmetro. Quando utilizado NULL, o ordenamento se dará de acordo com a ordem natural dos elementos da lista.

Fonte: https://docs.oracle.com/javase/8/docs/api/java/util/List.html

O método da interface exige um argumento do tipo . Chamar sem passar nenhum argumento causa erro de compilação.

str.sort(null); // null usa a ordem natural (alfabética)

// ou

str.sort(Comparator.naturalOrder());

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo