Palavra-chave case em Java
A palavra-chave case
em Java é usada em uma instrução switch
para definir um bloco de código que é executado quando a expressão switch corresponde a um valor específico. Cada rótulo case
deve ser exclusivo dentro da instrução switch e é seguido por dois pontos.
Uso
A palavra-chave case
é usada para lidar com várias condições de forma mais legível e eficiente do que vários comandos if-else
. Isso é particularmente útil quando você precisa executar códigos diferentes com base no valor de uma variável.
Sintaxe
switch (expression) {
case value1:
// code block
break;
case value2:
// code block
break;
// more cases...
default:
// default code block
}
expression
: A variável ou expressão avaliada uma vez no início da instrução switch.value1
,value2
, etc.: Os valores constantes com os quais a expressão é comparada.break
: Encerra o bloco de casos atual para evitar a queda.default
: Opcional; é executado se não houver correspondência comcase
.
Exemplos
Exemplo 1: Uso básico
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
}
}
}
Neste exemplo, a instrução switch
avalia o valor de day
. Como day
é 3, o bloco de código para case 3
é executado, imprimindo "Wednesday" (quarta-feira).
Exemplo 2: Uso de strings no Switch
public class SwitchStringExample {
public static void main(String[] args) {
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("Apple is red.");
break;
case "Banana":
System.out.println("Banana is yellow.");
break;
case "Orange":
System.out.println("Orange is orange.");
break;
default:
System.out.println("Unknown fruit.");
}
}
}
Este exemplo demonstra o uso de uma declaração switch
com uma String
. A instrução switch
avalia o valor de fruit
. Como fruit
é "Apple", ele imprime "Apple is red" (A maçã é vermelha).
Exemplo 3: Comportamento de passagem
public class FallThroughExample {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
break;
default:
System.out.println("Default");
}
}
}
Neste exemplo, a instrução switch
avalia o valor de num
. Como num
é 2, ele imprime "Two" (Dois) e continua a executar "Three" (Três) porque não há nenhuma instrução break
após case 2
.
Exemplo 4: Declarações Switch aninhadas
public class NestedSwitchExample {
public static void main(String[] args) {
int outer = 1;
int inner = 2;
switch (outer) {
case 1:
switch (inner) {
case 1:
System.out.println("Inner 1");
break;
case 2:
System.out.println("Inner 2");
break;
}
break;
case 2:
System.out.println("Outer 2");
break;
default:
System.out.println("Default Outer");
}
}
}
Este exemplo demonstra o uso de uma instrução switch
aninhada. A instrução externa switch
avalia o valor de outer
, enquanto a instrução interna switch
avalia o valor de inner
.
Dicas e práticas recomendadas
- Sempre use o site
break
: Use a instruçãobreak
para evitar o comportamento de fall-through, a menos que você o deseje explicitamente. - Caso padrão: Sempre inclua um caso
default
para lidar com valores inesperados. - Valores constantes: Certifique-se de que os rótulos
case
sejam constantes e exclusivos dentro da instrução switch. - Tipos de dados: as declarações
switch
podem ser usadas com os tiposbyte
,short
,int
,char
,String
eenum
. - Simplifique o código: Use as declarações
switch
para simplificar o código que envolve várias condições, tornando-o mais legível e de fácil manutenção. - Evite
null
no Switch: Tenha cuidado com os valores denull
nas expressões de switch para evitarNullPointerException
.
switch (expression) {
case constant1:
// code block
break;
case constant2:
// code block
break;
// more cases...
default:
// default code block
}