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.
É esperado que o candidato saiba compreender e analisar o uso de Strings em instruções switch
, como no seguinte exemplo.
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
.
-
Todo
case
deve ser único, não pode se repetir. -
O
default
pode aparecer em qualquer posição noswitch
.src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Default.javalink:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Default.java[role=include]
-
Tipos suportados em
switch
.-
int e Integer
-
byte e Byte
-
short e Short
-
char e Character
-
String
-
valores de Enums
-
-
Tipos não suportados em
switch
.src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Type.javalink:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Type.java[role=include]
-
A execução se inicia em um
case
e somente para ao encontrar umbreak
.src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Break.javalink:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Break.java[role=include]
saída no consoleJaneiro Não é um mês Fevereiro
Nesse caso a execução inicia no
case "jan"
, passar pelodefault
e pelocase "fev"
até parar nobreak
, por isso as 3 strings aparecem no console. -
Um
switch
vazio é válido, mesmo que não tenha utilidade.src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Empty.javalink:../../../src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_Empty.java[role=include]
-
Todos os valores de
case
precisam ser constantes, ou seja, variáveis finais em tempo de compilação. Se o valor docase
puder mudar em tempo de execução, o código não compila.src/org/j6toj8/languageenhancements/stringinswitch/StringInSwitch_ConstantOnly.javalink:../../../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.
É esperado que o candidato saiba compreender e analisar o uso de literais binários e numéricos, como no seguinte exemplo.
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.
-
No Java, Literal é qualquer número escrito diretamente no código, como todos do exemplo acima.
-
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 é umint
.src/org/j6toj8/languageenhancements/literals/Literals_Suffix.javalink:../../../src/org/j6toj8/languageenhancements/literals/Literals_Suffix.java[role=include]
-
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.javalink:../../../src/org/j6toj8/languageenhancements/literals/Literals_Prefix.java[role=include]
-
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.javalink:../../../src/org/j6toj8/languageenhancements/literals/Literals_Underscore.java[role=include]
-
Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 598). Wiley. Edição do Kindle.
-
Strings in switch Statements. Java Documentation.
-
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.