Buscar

Java Avançado Recup

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Java Avançado
Avaliação
Parte superior do formulário
1) Considere o código abaixo. O que é possível afirmar sobre ele?
	1
	for (int i = 0; i < 10; i++) {
	2
	  Runnable r = () -> System.out.println(i);
	3
	  r.run();
	4
	}
	
	Este código não compila devido a um erro na linha 3. (alternativa incorreta)
	
	Este código compilaria uma inner class anônima fosse usada no lugar da expressão lambda. (alternativa incorreta)
	
	Este código compila normalmente, mas ao ser executado lança uma exceção. (alternativa incorreta)
	
	Este código não compila devido a um erro na linha 2. (alternativa correta)
	
	Este código compila normalmente e, ao ser executado, imprime no console dos números de 0 a 9. (alternativa incorreta)
	
	Resposta correta!
Este código não compila devido a um erro na linha 2. Uma expressão lambda pode acessar uma variável definida fora dela (neste caso a variável i), desde que esta variável não tenha seu valor alterado. Como i muda a cada iteração do for, referenciar a variável i dentro da expressão lambda não é possível.
2) Considere o código abaixo. O que é possível afirmar sobre ele?
* Marque todas as alternativas que respondem o enunciado da questão
	1
	List<Integer> list = Arrays.asList(3, 2, 4, 5, 1);
	2
	list.sort((a, b) -> a.compareTo(b));
	3
	list.forEach(System.out::println);
	
	O método sort() chamado na linha 2 só pode ser usado com um parâmetro que seja uma expressão lambda. (alternativa incorreta)
	
	Uma das tarefas deste código é ordenar os elementos da lista em ordem decrescente. (alternativa incorreta)
	
	O método forEach() chamado na linha 3 só pode ser usado com um parâmetro que seja uma expressão lambda. (alternativa incorreta)
	
	A expressão lambda da linha 2 substitui uma instância da interface Comparator<T>. (alternativa correta)
	
	Na linha 3, cada elemento da lista é passado como parâmetro para o método System.out.println(). (alternativa correta)
	
	Resposta correta!
Este código faz a ordenação dos elementos numéricos da lista em ordem crescente (linha 2) e imprime os números ordenados no console (linha 3). Qualquer método que recebe uma expressão lambda como parâmetro pode também receber um objeto que implementa a interface funcional que corresponde ao tipo de parâmetro do método.
3) Observe o código abaixo. O que é possível afirmar com relação a ele?
* Marque todas as alternativas que respondem o enunciado da questão
	1
	@FunctionalInterface
	2
	public interface Testable {
	3
	  boolean test();
	4
	}
	
	Se um novo método for adicionado a esta interface, ela vai compilar normalmente. (alternativa incorreta)
	
	Esta é uma definição válida de uma interface funcional. (alternativa correta)
	
	Se Testable fosse definida como uma classe abstrata, ela continuaria sendo uma interface funcional. (alternativa incorreta)
	
	Se a anotação @FunctionalInterface fosse removida, Testable deixaria de ser uma interface funcional. (alternativa incorreta)
	
	A anotação @FunctionalInterface não é obrigatória em interfaces funcionais. (alternativa correta)
	
	Resposta correta!
Testable é uma interface funcional, pois atende os dois requisitos: é uma interface e possui apenas um método. A anotação @FunctionaInterface é opcional em uma interface funcional. No entanto, a presença desta anotação faz com que o compilador verifique se a interface realmente segue as regras de uma interface funcional.
4) O que é possível afirmar sobre o código abaixo?
* Marque todas as alternativas que respondem o enunciado da questão
	1
	Consumer<String> processor = msg -> {
	2
	  System.out.println(msg);
	3
	};
	4
	 
	5
	processor.accept("Java");
	
	Compila corretamente e, ao ser executado, imprime o texto "Java" no console. (alternativa correta)
	
	Atribui uma expressão lambda a uma variável do tipo Consumer<String>. (alternativa correta)
	
	Não compila devido a um erro de sintaxe na linha 5. (alternativa incorreta)
	
	Consumer<T> é uma interface funcional. (alternativa correta)
	
	Não compila devido a um erro de sintaxe na linha 1. (alternativa incorreta)
	
	Resposta correta!
Este código compila corretamente e imprime o texto "Java" no console. Uma variável do tipo Consumer<String>, que é uma interface funcional, é criada e recebe a referência a uma expressão lambda. Esta expressão está de acordo com o método accept() da interface, que recebe um parâmetro do tipo T (que neste caso é uma String e retorna void. Quando o método accept() é chamado, a expressão lambda é executada.
5) Considere que a seguinte expressão lambda é válida: (a, b) -> a + b. O que é possível afirmar sobre ela?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Os parâmetros a e b podem ser do tipo String (alternativa incorreta)
	
	Soma os valores dos parâmetros passados e retorna o resultado (alternativa correta)
	
	Não retorna qualquer informação (void) (alternativa incorreta)
	
	Possui dois parâmetros (alternativa correta)
	
	A expressão lambda poderia ser reescrita como: (a, b) -> { a + b; } (alternativa incorreta)
	
	Resposta correta!
Esta expressão lambda recebe dois parâmetros numéricos (senão a soma de ambos não seria possível). Os valores dos dois parâmetros são somados e o resultado desta soma é retornado. Se as chaves ({ e }) fossem usadas, a expressão poderia ser reescrita como: (a, b) -> { return a + b; }
Parte inferior do formulário

Outros materiais