Skip to content

Latest commit

 

History

History
137 lines (111 loc) · 5.2 KB

01-string-in-switch-and-literals.asc

File metadata and controls

137 lines (111 loc) · 5.2 KB

Objetos Strings

Objetivo
Develop code that uses String objects in the switch statement, binary literals, and numeric literals, including underscores in literals.
-
Desenvolver código que utilize objetos String em instruções Switch, binários literais, e numéricos literais, incluindo underscore (_) em literais.

String em instruções Switch

É esperado que o candidato saiba compreender e analisar o uso de Strings em instruções switch, como no seguinte exemplo.

src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Complete.java
link:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Complete.java[role=include]

Apesar da certificação ter foco nas atualizações trazidas pelo Java 7 e 8, é esperado que o candidato entenda também conceitos de versões anteriores do Java. Por isso, serão apresentadas algumas regras que talvez você já conheça sobre switch, mas utilizando String no switch.

  1. Todo case deve ser único, não pode se repetir.

  2. O default pode aparecer em qualquer posição no switch.

    src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Default.java
    link:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Default.java[role=include]
  3. Tipos suportados em switch.

    • int e Integer

    • byte e Byte

    • short e Short

    • char e Character

    • String

    • valores de Enums

  4. Tipos não suportados em switch.

    src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Type.java
    link:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Type.java[role=include]
  5. A execução se inicia em um case e somente para ao encontrar um break.

    src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Break.java
    link:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Break.java[role=include]
    saída no console
    Janeiro
    Não é um mês
    Fevereiro

    Nesse caso a execução inicia no case "jan", passar pelo default e pelo case "fev" até parar no break, por isso as 3 strings aparecem no console.

  6. Um switch vazio é válido, mesmo que não tenha utilidade.

    src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Empty.java
    link:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Empty.java[role=include]
  7. Todos os valores de case precisam ser constantes, ou seja, variáveis finais em tempo de compilação. Se o valor do case puder mudar em tempo de execução, o código não compila.

    src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_ConstantOnly.java
    link:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_ConstantOnly.java[role=include]

Pronto, essas são as regras de switch. Você provavelmente já conheçe algumas referentes à versões anteriores do Java, mas agora você as viu em switch que utilizam Strings. Isso não era possível antes do Java 7.

Literais Binários e Numéricos, incluindo underscore( _ )

É esperado que o candidato saiba compreender e analisar o uso de literais binários e numéricos, como no seguinte exemplo.

src/org/j6toj8/languageenhancements/literals/Literals_Complete.java
link:../../../src/org/j6toj8/languageenhancements/literals/Literals_Complete.java[role=include]

Apesar da certificação ter foco nas atualizações trazidas pelo Java 7 e 8, é esperado que o candidato entenda também conceitos de versões anteriores do Java. Por isso, serão apresentadas algumas regras que talvez você já conheça sobre literais.

  1. No Java, Literal é qualquer número escrito diretamente no código, como todos do exemplo acima.

  2. Por padrão, o Java interpreta literais como int. Ou seja, se não houver um sufixo no número para mudar seu tipo, ele é um int.

    src/org/j6toj8/languageenhancements/literals/Literals_Suffix.java
    link:../../../src/org/j6toj8/languageenhancements/literals/Literals_Suffix.java[role=include]
  3. Por padrão, o Java interpreta literais como sendo decimais. Existem prefixos que mudam o sistema numérico do literal.

    src/org/j6toj8/languageenhancements/literals/Literals_Prefix.java
    link:../../../src/org/j6toj8/languageenhancements/literals/Literals_Prefix.java[role=include]
  4. A partir do Java 7, é possível utilizar underscore (_) para separar visualmente um número. Isso não muda o valor do número, e serve apenas para tornar o código mais legível.

    src/org/j6toj8/languageenhancements/literals/Literals_Underscore.java
    link:../../../src/org/j6toj8/languageenhancements/literals/Literals_Underscore.java[role=include]
Referências
Strings em Switch
Literais
  • Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 597). Wiley. Edição do Kindle.

  • Java/Literais. Wikibooks.