Mini-Teste: Desmistificando a Certificação SCJP6 Parte VIII - Parte 4 - B

Veja neste artigo uma sequencia de questões bem interessantes.

  1. Dado:
    public class Main { /** * @param args */ public static void main(String[] args) { for(int i = 0; i<3|(i%2)==0;System.out.print("BLA"), i++){ System.out.print(" "+i+" "); } } }
    O que será impresso?
    1. BLA 0 BLA 1 BLA 2
    2. 0 BLA 1 BLA 2 BLA
    3. 0 BLA 1 BLA 2 BLA 3 BLA
    4. 0 1 2 BLA BLA BLA
    5. 0 1 2 BLA 3 BLA
    6. esse código não compila
    7. é lançada uma Exception
  2. Dado o seguinte código:
    public class SwitchTesteEnum { enum Naipe{PAUS,COPAS,ESPADAS,OUROS} /** * @param args */ public static void main(String[] args) { String a = "Java "; switch (Naipe.COPAS) { case PAUS: a+="PAUS "; default: a+="não será impresso "; case COPAS: a+="copas "; break; case ESPADAS: a+=" espadilha "; break; case OUROS: a+="ouros "; } System.out.println(a); } }
    Qual será a saída?
    1. copas
    2. Java copas espadilha ouros
    3. Java copas
    4. copas espadilha ouros
    5. copas Java
    6. erro de compilação
    7. é lançada uma exceção
  3. Dado a classe:
    public class LoopRotulado { /** * @param args */ public static void main(String[] args) { System.out.print(true^true|false); System.out.print(true^true&true); System.out.print(true|true&false); System.out.print(true|true&&false); } }
    Qual é a saída no console?
    1. truefalsetruefalse
    2. falsefalsetruefalse
    3. falsefalsefalsefalse
    4. truetruetruetrue
    5. falsetruefalsetruefalse
  4. Dado:
    public class X { /** * @param args */ public static void main(String[] args) { int a=9,y=6; for(int z=0;z<6;z++,y--){ a--; label: if(a>3){ System.out.print(a+" "); --a; break label; } a--; } } }
    Qual é o resultado?
    1. 8 7 6
    2. 8 5
    3. 8
    4. 7
    5. é lançada uma exceção
    6. erro de compilação
  5. Dado:
    public class SwitchTeste { final static int x2=7; final static Integer y4=8; /** * @param args */ public static void main(String[] args) { Integer x1=5; String s="a"; if(x1<9)s+="b"; switch(x1){ case 5: s+="c"; case x2: s+="d"; case y4: s+="e"; } } }
    Qual é o resultado?
    1. abc
    2. abcde
    3. a compilação falha devido apenas a 1 erro, relativo a switch(x1)
    4. a compilação falha devido a erros em várias linhas.
    5. a compilação falha devido apenas a 1 erro, relativo a case y4: s+=”e”;

GABARITO COMENTADO

  1. Resposta B

    A sintaxe mostrada é válida. Em conjunto com a condição de incremento/decremento, qualquer outra instrução pode ser colocada. Pensando-se em termos bem amplos, o problema inteiro poderia ser resolvido em uma declaração de loop for. Porém, isso é por demais confuso. Esse loop será executado 3 vezes. O valor de i aparece na frente, sendo sucedido pela String.

  2. Resposta C

    A declaração de enum pode estar fora ou dentro da classe. O modo de invocação é a mesmo. Nesse caso, existe coincidência com o case copas e a String produzida será o resultado da concatenação entre Java e copas.

  3. Resposta B

    Note atentamente a tabela de precedência de operadores lógicos. É importante que você memorize esta tabela para a prova.

    & AND sem abreviação Da esquerda para direita
    ^ XOR Da esquerda para direita
    | OR sem abreviação Da esquerda para direita
    && AND com abreviação Da esquerda para direita
    || OR com abreviação Da esquerda para direita

    Baseados nela, vamos avaliar a questão.

    System.out.print(true^true|false);->false System.out.print(true^true&true);->false System.out.print(true|true&false);->true System.out.print(true|true&&false);->false

    Desse modo, a saída é falsefalsetruefalse.

  4. Resposta F

    Os rótulos apenas valem para blocos e não instruções condicionais, como switches e ifs.

  5. 9. Resposta E

    Primeiramente, essa é uma questão altamente específica. Uma instrução case pode conter apenas constantes literais em tempo de compilação. O problema é que uma referência Integer(y4), mesmo sendo final, não pode entrar em um case. Sendo assim, esse código não compila.

Em breve daremos continuidade nesta série com mais um artigo.


Leia todos artigos da série

Artigos relacionados