


































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Exercícios para o Exame de Certificação em Java
Tipologia: Exercícios
1 / 74
Esta página não é visível na pré-visualização
Não perca as partes importantes!



































































Capítulo 01
Questionário
Falso. O alcance de número negativo é maior por 1 que o alcance de números positivos.
A. Big01LongStringWiº B. $int C. bytes D. $ E. finalista
Todos os identificadores são válidos.
B. público arg de main(String nulo estático []) D. público main(String nulo estático [] arg)
As alternativas B e D são ambas aceitáveis.
A. Importações, declaração de pacote, classes, B. Classes, importações, declarações de pacote, C. Declaração de pacote tem que vir primeiro; ordene para importações e definições de classe não são significantes. D. Empacote declaração, importações, classes, E. Importações têm que vir primeiro; ordene para declaração de pacote e definições de classe não são significantes.
A alternativa D está correto. Esta ordem deve ser observada estritamente.
Que valor será impresso na linha 6?
A. 0. B. -1. C. 12. D. 11.
A alternativa C está correta. O passado para o método decrement () uma cópia do argumento d; a cópia adquire decremento, mas o original está intacto.
Observe a diferença entre esta questão e a anterior:
Nesta questão o método Decrementer trabalha com uma cópia do parâmetro passado:
public void decrement(double decMe) {decMe = decMe – 1.0;}
Na questão anterior (6), o método trabalha diretamente com variável.
Public void bump(Holder theHolder) {theHolder.held++ ;}
A. Garbae não podem ser forçados. B. Chame System.gc (); C. Chame System.gc (), passando em uma referência ao objeto a ser Garbage-collected. D. Chame Runtime.gc () E. Fixe todas as referências para o objeto para valores novos (nulo, por exemplo).
A alternativa A está correta. Garbage colletion não pode ser forçado. Chamando System.gc () ou Runtime.gc () não é 100 por cento fidedigno, desde que a linha de Garbage-Collection poderia adiar a uma linha de prioridade mais alta; assim B e D estão incorretos. C está incorreto porque o dois métodos gc () não levam argumentos; de fato, isto você ainda tem uma referência para passar no método, o objeto não é contudo elegível ser colecionado. A alternativa E fará o objeto elegível para coleção o da próxima vez as corridas de coleção de lixo.
A. Depende do hardware subjacente. B. 0 até 216 - 1 C. 0 até 232 - 1 D. 2^15 até 215 - 1 E. 2^31 até 231 - 1
A alternativa D está correto. O alcance para um 16 bit pequeno é – 215 por 2^15 - 1. Este alcance é parte da especificação de java, embora o hardware subjacente.
A. Depende do hardware subjacente. B. 0 por 2^8 - 1 C. 0 por 2^16 - 1 D. 2^7 por 2^7 - 1 E. 2^15 por 2^15 - 1
A alternativa D está correta. O alcance para uns 8-bit pequeno é – 27 por 27 - 1.
A alternativa A está correta. Em todo caso, o padrão de bit para -1 é " todo os uns ". Na alternativa A isto é trocado à direita no máximo cinco lugares com a introdução de bits 0 de posições significantes. O resultado é 271 pedaços na posição menos significante do valor de int. Considerando que o bit mais significante é 0, isto representa um valor positivo (de fato 134217727). Na alternativa B o valor de troca é 32 bits. Isto resultará em nenhuma mudança para a variável x, desde que seja executado de fato por (32 mod 32) bits que é igual 0. Assim em B o valor de x está inalterado ( - 1). Na alternativa C é realmente ilegal como o resultado de x >>> 5 é do tipo int, e não pode ser trocada para o tipo byte x sem declaração explícita. Até mesmo se o elenco foi somado e dá para byte x = -1; x = (byte) (x >> >5); o resultado da expressão x >>> seria calculada de 5 formas:
A. String x = Oi "; int y = 9; x + = y; B. String x = Oi "; int y = 9; se (x == y) {} C. String x = Oi "; int y = 9; x = x + y; D. String x = Oi "; int y = 9; y = y + x; E. String x = nulo; int y = (x! = null) && (x.length ()> 0)? x.length (): 0;
As alternativas A, C e E são todas legais. Na alternativa A o uso de
A alternativa C é idêntica a alternativa A sem o uso do operador de tarefa de taquigrafia.
A alternativa D calcula y + x que é legal em si mesmo porque produz uma String da mesma maneira como fez x + y. Ela tenta nomear o resultado que é " 9Hello " em uma variável de int então. Como o resultado de y + x é uma String, isto não é permitido.
A alternativa E é bastante diferente das outras. Os pontos importantes são o uso de curto circuito o operador && e o operador ternário?:. O operador à esquerda do && é o operador que sempre é avaliado, e neste caso a condição (x != nulo) é falsa. Porque isto é falso, a parte da mão direita da expressão (x.length ( )> 0) não precisa ter sido avaliada, porque o resultado do operador && é conhecido para ser falso. Iste pequeno-cirucuito é efetue nitidamente e evita a execução da chamada de método x.length () que falharia com um NullPointerException no momento da sua corrida. Este resultado falso é então usado na avaliação da expressão ternária. Como o valor de boolean é falso, o resultado da expressão global volta à direita o valor do cólon que é 0.
A. int x = 100; float y = 100.0F; if (x == y) {System.out.println(“Equal ”);}
B. int x = 100; Interger y = new Interger(100); if (x == y) {System.out.println(“Equal ”);}
C. Integer x = new Integer(100); Integer y = new Integer(100); if (x == y) {System.out.println(“Equal ”);}
D. String x = new String(“ 100 ”); String y = new String(“ 100 ”); if (x == y) {System.out.println(“Equal ”);}
E. String x = “ 100 ”; String y = “ 100 ”; if (x == y) {System.out.println(“Equal ”);}
As alternativas A e E estão corretas. Embora int e float não sejam compatíveis, eles geralmente podem ser misturados em qualquer lado de um operador. Desde então == não é nenhuma tarefa mas do que um operador de comparação, isto simplesmente causa promoção normal, de forma que o int é promovido a um valor do tipo float 9.0 e é comparado
A alternativa A está correta. O efeito do operador && é primeiro avaliar o operando à esquerda. Isso é a expressão (s.length( )> 5). Como o tamanho do objeto de StringBuffer s é de fato 5, este teste devolve falso. Usando a identidade lógica falso AND X = falso, o valor do condicional global é completamente determinado, e o && o operador salta avaliação do operando da mão direita então. Como resultado, o valor no objeto de StringBuffer ainda é simplesmente " Oi " quando for impresso.
Se o teste no lado à esquerda de && tinha devolvido verdadeiro, como teria acontecido tido o StringBuffer contido um segmento de texto mais longo, então o lado da mão direita teria sido avaliado. Embora poderia parecer um pouco estranho, aquela expressão, (s.append (lá ").equals (false ")), é válido e retorna um boolean. De fato, é garantido o valor da expressão ser falso, desde que é claramente impossível para qualquer StringBuffer conter precisamente " Falso " quando teve há pouco uma String " lá " juntado a isto. Isto é porém irrelevante - a essência desta expressão é que, se é avaliado, tem o efeito colateral de mudar o StringBuffer original juntando o texto " lá ".
A. O valor de saída é b = 10.
B. O valor de saída é b = 5.
C. O valor de saída é b = 250.
D. O valor de saída é b = 245.
A alternativa B está correta. O uso exclusivo do operador or ^ trabalha nos pares de pedaços em posição equivalente no dois operadores. Neste exemplo produz isto:
00001010 00001111
A advertência é que os únicos 1 bits na resposta estão nessas colunas onde exatamente um do operandos tem um 1 bit. Se nenhum, ou ambos, os operandos tem um 1, então os resultados serão 0 bit.
O valor 00000101 binário corresponde a 5 decimal.
É preço que se lembra que, embora este exemplo foi mostrado como um cálculo de byte, o funcionamento atual é int usando acabado (32- bit) valores. Isto é por que o elenco explícito é requerido antes do resultado é nomeado no b variável em linha 5.
A. O valor de saída é 99.99.
B. O valor de saída é 9.
C. O valor de saída é 9.0.
D. Ocorrerá um erro de compilação na linha 5.
A alternativa C está correta. Neste código os valores de resultado opcionais para o operador ternário, 99.99 (um double) e 9 (um int), são de tipos diferentes. O tipo de resultado de um operador ternário deve ser determinado completamente em tempo de compilação, e neste caso o tipo escolhido é o de usar as regras de promoção para operandos binário, que o é tipo double. Porque o resultado é um double, o valor de produção está impresso em um formato de ponto flutuante.
A escolha do qual os dois valores para produção é feita em base do valor de boolean que precede o ?. Desde que x é 4, o teste (x> 4) é falso. Isto causa a expressão global para levar o segundo dos possíveis valores que são 9 em lugar de 99.99. Porque o tipo de resultado é promovido para um tipo double, o valor de produção é escrito de fato como 9.0 em lugar de o mais óbvio 9.
A alternativa A está correta. Os operadores de tarefa do op de forma = só avalie a expressão à esquerda uma vez. Assim o efeito de decrementing x, em--x, só acontece uma vez e resulta em um valor de 0 e não -1. Então nenhum fora-de-salto forma são tentados acessos. Os elementos de ordem que são afetado por isto operações são " Fred ", desde que o decrement acontece antes o + = operação é executada. Embora Fio objeta que eles são immutable, as referências que são os elementos de ordem não são. É completamente possível causar o valor name[0] ser modificado para se referir a um Fio recentemente construído que acontece para ser " Fred ".
Capítulo 03
A. friendly String s;
B. transient int i = 41;
C. public final static native int w( );
D. abstract double d;
E. abstract final double hyperbolicConsine( );
A, D, e E são ilegais. A alternativa A é ilegal porque “amigável” não é um Keyword.A alternativa B é uma declaração passageira legal. A alternativa C é estranha mas legal. A alternativa D é ilegal porque só métodos e classes podem ser abstratas. A alternativa E é ilegal porque abstrato e final é contraditório.
A. Uma classe abstract não pode ter nenhum método final.
B. Uma classe final não pode ter nenhum método abstract.
A alternativa B é verdadeira: Uma classe final pode não ter nenhum método abstrato. Qualquer classe abstrata, métodos devem ser abstrato, e uma classe pode não ser do tipo abstrato e final. A declaração da alternativa A diz que na classe abstrata pode não ter métodos finais, mas não há nada errado com isto. A classe abstrata vai ser sub-classe eventualmente, e a subdivisão de classe tem que evitar anular os métodos finais do pai. Qualquer outro método pode ser anulado livremente.
A. As linhas 5 e 12 não irão compilar, devido a falta dos nomes dos métodos e dos tipos de retorno.
B. A linha 12 não irá compilar, porque você não pode chamar apenas o inicializador static.
C. O código irá compilar e a saída será x = 10.
D. O código irá compilar e a saída será x = 15.
E. O código irá compilar e a saída será x = 3.
A alternativa E está correta. Inicializadores estáticos múltiplos (enfileira 5 e 12) são permitidos. Todo o código do inicializador estático é executado em momento de classe-carga, assim antes de principal () sempre seja corrido, os dividiram por 5 (linha 12).
A. A linha 8 não irá compilar, porque ela possui uma referência static para uma variável private.
B. A linha 13 não irá compilar, porque ela possui uma referência static para uma variável private.
C. O programa irá compilar e a saída será x = 102.
D. O programa irá compilar e a saída será x = 103.
E. O programa irá compilar e a saída será x = 104.
A alternativa E está correta. O programa compila bom; o “referência estática para uma variável privada” materiais em respostas UM e B é tolice. O x variável estático é incrementado quatro vezes, em linhas 8,10,12,and13.
Na linha 3, o método pode ser declarado privado. O acesso de método da versão de subdivisão de classe (linha 8) é amigável, e só um método privado ou amigável pode ser anulado para ser amigável. O princípio básico é que um método pode não ser anulado para ser mais privado. (Veja Figura 3.2) Em linha 8 (linha 3 pretensiosa permanece só), a versão de suprclass é amigável, assim a versão de subdivisão de classe pode estar como é (e é amigável), ou pode ser declarado protegido ou público.
A. private
B. protected
C. private protected
D. transient
E. private transient
A resposta correta é D (transitent). Os outros modificadores controlam acesso de outros objetos dentro do Java Máquina Virtual.
A. O programa irá compilar e executar. A saída será Before: 0 e After: 2.
B. O programa irá compilar e executar. A saída será Before: 0 e After: 1.
C. A compilação do Nightingale irá falhar na linha 4, porque statics não podem ser anulados.
D. A compilação do Nightingale irá falhar na linha 10, porque o método fly( ) é protegido na super-classe.
E. A compilação do Nightingale irá ser bem sucedida, mas uma exception irá ocorrer na linha 10, porque o método fly( ) é protegido na super-classe.
A alternativa A está correta. Não há nada errado com Rouxinol. O referenceCount estático é batido duas vezes: uma vez em linha 4 de Rouxinol, e uma vez em linha 5 de Pássaro. (O constructor de nenhum- argumento do superclass sempre é caled de implicitly no começo de uma classe constructor de ', a menos que um constructor de superclass diferente seja pedido. Isto não tem nada que ver Com o tópico deste chapter,but é coberto em Capítulo 6, Objetos e Classes. ) ReferenceCount de Sinse é batido duas vezes e não só uma vez, resposta B está errado. C diz que não podem ser anulados atatics, mas nenhum método estático está sendo anulado em linha 4; tudo aquilo está acontecendo é incre- ment de na de na herdaram variável estática. D está errado, desde protegeu é justamente o modificador de acesso nós queremos Pássaro. Voe () ter: Nós estamos chamando Pássaro. Voe () de uma subdivisão de classe em um pacote diferente. Resposta E é ridículo, mas usa terminologia acreditável.
Capítulo 04
A. São convertidos automaticamente somente tipos primitivos, para mudar o tipo de uma referência de objeto, você tem que fazer um cast.
B. São convertidas automaticamente somente referências de objeto; mudar o tipo de um primitivo, você tem que fazer um cast.
C. Promoção de aritmética de referências de objeto requer arremesso explícito.
D. Primitivos e referências de objeto podem ser ambos convertidos e podem fazer cast.
E. Casting de tipos numéricos podem requerer um cheque de runtime.
A alternativa D está correta. C está errado porque objetos não levam parte em operações de aritmética. E está errado porque lançando potencialmente só de referências de objeto requer um cheque de runtime.
Enfileire 6 (b = s) não compilará porque convertendo um pequeno a um byte é uma conversão de estreitamento que requer elenco de anexplicit. As outras tarefas no código estão alargando conversões.
O código surpreendentemente, não compilará a linha 3. São convertidos o dois operands que são originalmente bytes a ints antes da