Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2025

ProgramaçãoLinguagens de programação
Código
qg474879
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Nível
Superior
Cargo
Analista em Computação / Ênfase em Análise de Sistemas / Gerência de Projetos de TI
Analise o seguinte código em Java 8 abaixo:Q55.png 477×52Qual será a saída?
  1. AANA<br>BIA<br>CARLA (em linhas separadas, com <br> indicando a quebra de linha)
  2. BANA BIA CARLA
  3. Cana bia carla
  4. DO código não compila devido à expressão lambda.
  5. EUma exceção do tipo UnsupportedOperationException.
Revelar gabarito e comentário

GabaritoA — ANA<br>BIA<br>CARLA (em linhas separadas, com <br> indicando a quebra de linha)

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”.

Streams e Lambdas em Java: a saída do código

Gabarito: letra A. O código utiliza uma expressão lambda para percorrer uma lista de nomes e imprimir cada um em uma linha separada, resultando em "ANA", "BIA" e "CARLA" em linhas distintas. A saída correta é exatamente a apresentada na alternativa A, com cada nome em uma linha própria.

A questão envolve o uso de Streams e expressões lambda em Java 8, recursos que permitem processar coleções de forma declarativa e concisa. O código provavelmente cria uma lista de strings ("ANA", "BIA", "CARLA") e utiliza o método forEach com uma lambda para imprimir cada elemento. O método forEach itera sobre cada elemento da coleção e executa a ação especificada, que neste caso é System.out.println(nome). Como println adiciona uma quebra de linha após cada impressão, a saída será cada nome em uma linha separada.

É importante entender que a expressão lambda nome -> System.out.println(nome) é uma forma concisa de representar um Consumer<String>, que é uma interface funcional que aceita um argumento e não retorna resultado. O Java 8 introduziu as lambdas como uma forma de implementar interfaces funcionais de maneira mais direta, e o método forEach da interface Stream (ou diretamente de uma Collection via Iterable) aceita um Consumer.

A alternativa D sugere que o código não compila devido à expressão lambda, o que é incorreto, pois lambdas são perfeitamente válidas em Java 8. A alternativa E menciona uma UnsupportedOperationException, que poderia ocorrer se tentássemos modificar uma lista imutável, mas a operação de impressão não modifica a lista, então essa exceção não é lançada. As alternativas B e C apresentam variações de formatação da saída, mas a correta é a que reflete a quebra de linha entre os nomes.

A pegadinha desta questão está em reconhecer que o método println adiciona uma quebra de linha após cada impressão, resultando em nomes em linhas separadas, e não em uma única linha ou com formatação diferente. Além disso, é preciso saber que lambdas são válidas em Java 8 e que a operação de impressão não gera exceções de modificação.

  1. 1forEach itera a lista
  2. 2Lambda: nome -> println
  3. 3println quebra a linha
  4. 4Saída: um nome por linha
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa A está correta porque o código imprime cada nome em uma linha separada. O método forEach com a lambda nome -> System.out.println(nome) executa println para cada elemento da lista, e println adiciona uma quebra de linha após cada impressão. Portanto, a saída é "ANA", "BIA" e "CARLA" em linhas distintas, exatamente como descrito na alternativa.

Alternativa B — ❌ Incorreta

A alternativa B está incorreta porque sugere que os nomes são impressos em uma única linha, separados por espaços. Isso ocorreria se o código usasse System.out.print(nome + " ") em vez de println. Como o código usa println, cada nome é impresso em uma linha separada, não em uma única linha.

Alternativa C — ❌ Incorreta

A alternativa C está incorreta porque sugere que os nomes são impressos em minúsculas ("ana bia carla"). O código não realiza nenhuma transformação nos nomes, então eles são impressos exatamente como estão na lista, ou seja, em maiúsculas ("ANA", "BIA", "CARLA").

Alternativa D — ❌ Incorreta

A alternativa D está incorreta porque afirma que o código não compila devido à expressão lambda. Em Java 8, expressões lambda são totalmente suportadas e são uma forma válida de implementar interfaces funcionais. O código compila sem erros, pois a lambda é usada corretamente com o método forEach.

Alternativa E — ❌ Incorreta

A alternativa E está incorreta porque sugere que o código lança uma UnsupportedOperationException. Essa exceção é lançada quando se tenta modificar uma coleção imutável, como uma lista criada com Arrays.asList e depois alterada. No entanto, o código apenas imprime os elementos, não os modifica, então essa exceção não é lançada.

PEGA ESSA DICA!

Para identificar a saída de um código com forEach e println, lembre-se de que println adiciona uma quebra de linha após cada impressão. Se o código usasse print, os nomes seriam impressos na mesma linha. Preste atenção nesse detalhe para evitar erros.

Gabarito: letra A

Link permanente: /questoes/qg474879