Che cos'è una custodia Switch in Java e come utilizzarla?

Pubblicato: 2022-03-04

Il caso switch in Java è una delle tante istruzioni Java che dicono al linguaggio di programmazione cosa fare. Come le frasi in lingua inglese che danno un'idea completa del testo e includono clausole, le istruzioni Java sono comandi che includono una o più espressioni eseguite dall'interprete Java. In termini più semplici, un'istruzione Java è un'istruzione che spiega cosa dovrebbe accadere.

Un'istruzione Java termina con un punto e virgola (;) e dice a Java di elaborare le istruzioni fino a quel punto e virgola. Per impostazione predefinita, l'interprete Java segue l'ordine in cui vengono scritte le istruzioni ed esegue un'istruzione dopo l'altra. Tuttavia, le istruzioni che controllano il flusso del programma (istruzioni di controllo del flusso), come loop e condizionali, non seguono l'ordine di esecuzione predefinito. Questo articolo si concentra su uno di questi tipi di meccanismi di controllo della selezione: l' istruzione switch case Java.

Sommario

Che cos'è un caso di commutazione in Java?

Java supporta tre tipi di istruzioni: istruzioni di espressione per modificare i valori delle variabili, chiamare metodi e creare oggetti, istruzioni di dichiarazione per dichiarare variabili e istruzioni di flusso di controllo per determinare l'ordine di esecuzione delle istruzioni.

L' istruzione switch case Java è un tipo di istruzione del flusso di controllo che consente al valore di un'espressione o di una variabile di modificare il flusso di controllo dell'esecuzione del programma attraverso un ramo a più vie. A differenza delle istruzioni if-then e if-then-else, l' istruzione switch Java ha diversi percorsi di esecuzione. Switch case in Java funziona con tipi di dati primitivi short, byte, int e char. Da JDK7, lo switch Java può essere utilizzato anche con la classe String, i tipi enumerati e le classi Wrapper che racchiudono tipi di dati primitivi come Byte, Character, Integer e Short.

Il corpo di un'istruzione switch case in Java è chiamato blocco switch. Ogni istruzione nel blocco switch è etichettata utilizzando uno o più casi o etichette predefinite. Quindi, l'istruzione switch valuta la sua espressione, seguita dall'esecuzione di tutte le istruzioni che seguono l'etichetta del caso corrispondente.

Di seguito è riportata la sintassi dell'istruzione switch case:

// istruzione switch

interruttore (espressione)

{

// dichiarazioni di casi

// i valori devono essere dello stesso tipo di espressione

valore caso1 :

// Dichiarazioni

rottura; // l'interruzione è facoltativa

valore caso2 :

// Dichiarazioni

rottura; // l'interruzione è facoltativa

// Possiamo avere un numero qualsiasi di dichiarazioni di casi

// di seguito è riportata l'istruzione predefinita, utilizzata quando nessuno dei casi è vero.

// Non è necessaria alcuna interruzione nel caso predefinito.

predefinito :

// Dichiarazioni

}

Esempio dell'istruzione switch Java

L'esempio di codice Java seguente dichiara un int denominato "month" il cui valore rappresenta uno dei 12 mesi dell'anno. Il codice utilizza l'istruzione switch case per visualizzare il nome del mese in base al valore del mese.

switch di classe pubblica Esempio {

public static void main(String[] args) {

mese intero = 6;

Stringa meseStringa;

cambia (mese) {

caso 1: monthString = “Gennaio”;

rottura;

caso 2: monthString = “Febbraio”;

rottura;

caso 3: monthString = “March”;

rottura;

caso 4: monthString = “Aprile”;

rottura;

caso 5: monthString = “Maggio”;

rottura;

caso 6: monthString = “giugno”;

rottura;

caso 7: monthString = “luglio”;

rottura;

caso 8: monthString = “Agosto”;

rottura;

caso 9: monthString = “Settembre”;

rottura;

caso 10: monthString = “Ottobre”;

rottura;

caso 11: monthString = “Novembre”;

rottura;

caso 12: monthString = “Dicembre”;

rottura;

default: monthString = “Mese non valido”;

rottura;

}

System.out.println(monthString);

}

}

Uscita: giugno

Scopo dell'istruzione break in caso di switch Java

L'istruzione break è un aspetto essenziale del caso switch Java che termina l'istruzione switch che la racchiude. L'istruzione break è necessaria perché senza di essa le istruzioni nel blocco switch cadrebbero. Pertanto, indipendentemente dall'espressione delle etichette case successive, tutte le istruzioni dopo l'etichetta case corrispondente vengono eseguite in sequenza fino a quando non viene rilevata un'istruzione break.

Il codice seguente è un esempio per mostrare un blocco switch che cade in assenza dell'istruzione break.

classe pubblica SwitchExampleFallThrough {

public static void main(String[] args) {

java.util.ArrayList<String> futureMonths =

nuovo java.util.ArrayList<String>();

mese intero = 6;

cambia (mese) {

caso 1: futureMonths.add(“Gennaio”);

caso 2: futureMonths.add(“Febbraio”);

caso 3: futureMonths.add(“Marzo”);

caso 4: futureMonths.add(“Aprile”);

caso 5: futureMonths.add(“Maggio”);

caso 6: futureMonths.add(“June”);

caso 7: futureMonths.add(“Luglio”);

caso 8: futureMonths.add(“Agosto”);

caso 9: futureMonths.add(“Settembre”);

caso 10: futureMonths.add(“Ottobre”);

caso 11: futureMonths.add(“Novembre”);

caso 12: futureMonths.add(“Dicembre”);

rottura;

predefinito: pausa;

}

if (futureMonths.isEmpty()) {

System.out.println(“Numero mese non valido”);

} altro {

for (String monthName : futureMonths) {

System.out.println(nomemese);

}

}

}

}

Produzione:

giugno

luglio

agosto

settembre

ottobre

novembre

dicembre

Il codice sopra mostra il mese dell'anno corrispondente al mese intero e i mesi successivi. In questo caso, l'istruzione break finale non serve a nulla perché il flusso esce dall'istruzione switch. L'uso dell'istruzione break è utile perché rende il codice meno soggetto a errori e le modifiche più semplici. La sezione predefinita nel codice gestisce tutti i valori non regolati da nessuna delle sezioni del caso.

Istruzione switch Java con più etichette case

Anche le istruzioni Switch in Java possono avere più etichette case. Il codice seguente illustra lo stesso: qui viene calcolato il numero di giorni in un determinato mese dell'anno.

classe SwitchMultiplo{

public static void main(String[] args) {

mese intero = 2;

int anno = 2020;

int numGiorni = 0;

cambia (mese) {

caso 1: caso 3: caso 5:

caso 7: caso 8: caso 10:

caso 12:

numGiorni = 31;

rottura;

caso 4: caso 6:

caso 9: caso 11:

numGiorni = 30;

rottura;

caso 2:

if (((anno % 4 == 0) &&

!(anno % 100 == 0))

|| (anno % 400 == 0))

numGiorni = 29;

altro

numGiorni = 28;

rottura;

predefinito:

System.out.println("Mese non valido.");

rottura;

}

System.out.println("Numero di giorni = "

+ numGiorni);

}

}

Produzione:

Numero di giorni = 29

Istruzioni di case switch Java nidificate

Un'opzione nidificata è quando si utilizza un'opzione come parte della sequenza di istruzioni di un'opzione esterna. In questo caso, non vi è alcun conflitto tra le costanti case nell'altra opzione e quelle nell'opzione interna perché un'istruzione switch definisce il proprio blocco.

L'esempio seguente mostra l'uso di istruzioni switch-case Java nidificate :

classe pubblica TestNest {

public static void main(String[] args)

{

Ramo di stringa = “CSE”;

int anno = 2;

interruttore (anno) {

caso 1:

System.out.println(“Corsi opzionali: Algebra, Advance English”);

rottura;

caso 2:

switch (ramo) // switch annidato

{

caso “CSE”:

caso “CCE”:

System.out.println(“Corsi opzionali: Big Data, Machine Learning”);

rottura;

caso “ECE”:

System.out.println ("corsi opzionali: Ingegneria dell'antenna");

rottura;

predefinito:

System.out.println(“Corsi opzionali: Ottimizzazione”);

}

}

}

}

Produzione:

Corsi opzionali: Big Data, Machine Learning

Uso di stringhe nelle istruzioni switch

A partire da JDK7, puoi utilizzare un oggetto String nell'espressione di un'istruzione switch. Il confronto dell'oggetto stringa nell'espressione dell'istruzione switch con le espressioni associate di ciascuna etichetta case è come se stesse usando il metodo String.equals. Inoltre, il confronto di oggetti stringa nell'espressione dell'istruzione switch fa distinzione tra maiuscole e minuscole.

L'esempio di codice seguente mostra il tipo di gioco in base al valore della stringa denominata "gioco".

classe pubblica StringInSwitchStatementExample {

public static void main(String[] args) {

Gioco delle corde = “Grillo”;

cambia (gioco){

custodia “Volley”: custodia “Calcio”: custodia “Cricket”:

System.out.println("Questo è un gioco all'aperto");

rottura;

custodia”Giochi di carte”: custodia”Scacchi”: custodia”Puzzle”: custodia”Pallacanestro indoor”:

System.out.println("Questo è un gioco al chiuso");

rottura;

predefinito:

System.out.println("Che gioco è?");

}

}

}

Produzione:

Questo è un gioco all'aperto

Regole da ricordare quando si utilizzano le istruzioni switch Java

Sarebbe meglio tenere a mente determinate regole durante l'utilizzo delle istruzioni switch Java . Di seguito è riportato un elenco degli stessi:

  • Il valore di un caso e la variabile nell'opzione devono avere lo stesso tipo di dati.
  • Le istruzioni switch Java non consentono valori maiuscoli duplicati.
  • Un valore case dovrebbe essere letterale o costante. Non sono ammesse variabili.
  • L'uso dell'istruzione break all'interno dello switch termina una sequenza di istruzioni.
  • L'istruzione break è facoltativa e omettendola continuerà l'esecuzione nel caso successivo.
  • Anche l'istruzione predefinita è facoltativa e può verificarsi ovunque all'interno del blocco switch. Se non viene posizionato alla fine, è necessario aggiungere un'istruzione break dopo l'istruzione predefinita per saltare l'esecuzione dell'istruzione case successiva.

Via avanti

Java ha una popolarità senza pari tra programmatori e sviluppatori ed è uno dei linguaggi di programmazione più richiesti oggi. Inutile dire che gli sviluppatori in erba e gli ingegneri del software che vogliono migliorare se stessi per il mercato del lavoro in continua evoluzione devono avere una roccaforte sulle loro competenze Java.

La certificazione PG collegata al lavoro di upGrad in ingegneria del software è progettata appositamente per le matricole e i candidati dell'ultimo anno che desiderano imparare a programmare e ottenere posti in ruoli software di livello base.

Se ti stai chiedendo cosa comporti il ​​corso online di 5 mesi, ecco alcuni punti salienti per darti un'idea:

  • Ottieni specializzazioni MERN Stack e Cloud-Native
  • Impara le migliori competenze come database Java, DSA, CSS3, HTML5, AWS, MERN, SQL e NoSQL e altro ancora
  • Oltre 500 ore di contenuti con oltre 350 ore di formazione pratica
  • Cinque progetti di settore e oltre 50 sessioni dal vivo
  • Preparazione al tirocinio e orientamento professionale
  • Forum di discussione e forte rete di pari

Se vuoi dare il via al tuo viaggio verso una promettente carriera nell'ingegneria del software, ecco la tua occasione per imparare dai migliori.

1. Che cos'è un caso in un'istruzione switch?

Un'istruzione switch in Java consente di testare l'uguaglianza di una variabile rispetto a un elenco di valori. Qui, ogni valore è noto come un caso e la variabile attivata viene verificata per ciascuno dei casi.

2. Quali sono i vantaggi di una custodia per interruttori?

Il vantaggio principale delle istruzioni switch case Java rispetto alle tradizionali cascate if-else è che la prima consente ai programmatori di scrivere un codice più compatto, chiaro e leggibile. D'altra parte, le istruzioni if-else spesso implicano molte ripetizioni di codice. Pertanto, se vogliamo modificare una parte specifica del codice, dovremmo apportare modifiche in altri punti. Per evitare questo processo dispendioso in termini di tempo e soggetto a errori, è più saggio utilizzare i casi di commutazione.

3. Qual è la differenza tra switch case e if-else?

Nel caso delle istruzioni switch, i casi vengono eseguiti in sequenza uno dopo l'altro finché non viene rilevata la parola chiave break o viene eseguita l'istruzione predefinita. Al contrario, nel caso di istruzioni if-else, il blocco 'if' o 'else' viene eseguito a seconda della condizione.