Instrucțiunea switch în Java
Instrucțiunea switch în Java

Ai întâlnit până acum instrucțiunea switch? Este o instrucțiune folosită în aproape toate limbajele de programare mai cunoscute. Îți recomand să lecturezi articolul „Cele mai bune limbaje de programare”.

Ce face instrucțiunea switch? Așa cum îi spune și numele, este un schimbător (întrerupător). Dar ce anume schimbă? Schimbă variantele până o găsește pe cea corectă (dacă o găsește).

Instrucțiunea switch înlocuiește instrucțiunea if în cazul în care sunt prea multe opțiuni cu if…else. Apropo de instrucțiunea if, ai citit articolul „Instrucțiunea if în Java”?


Exemplu cu switch 🔗

 
int a = 100;
switch(a) {
    case 10:
         System.out.println("Numărul 10");
         break;
    case 100:
         System.out.println("Numărul 100");
         break;
    default:
         System.out.println("Niciun număr");
}
// Afișează: Numărul 100

În exemplul anterior, am definit variabila a, iar apoi am intrat în instrucțiunea switch.

Variabila a este „cireașa de pe tort” pentru instrucțiunea switch, iar acele cazuri (case), sunt verificate exact ca și cum ar fi if…else. În cazul nostru, cazul al doilea este corect și se afișează textul „Numărul 100”.


Elementele instrucțiunii switch 🔗

Instrucțiunea switch are câteva elemente importante, care merită toată atenția programatorului (a ta și a mea)!

  • case: toate cazurile pun la „bătaie” o variantă (sau variabilă), iar dacă valoarea variabilei pusă la switch este exact cea a unui caz, atunci se execută codul din cazul respectiv. În exemplul anterior, valoarea variabilei pusă la switch a fost 100, deci valoarea pusă la al doilea caz și s-a executat codul aferent. E bine de știut că la case nu se acceptă valori zecimale (double și float), deci te rog să folosești orice alt tip de variabilă, cum ar fi int, char, String. Îți recomand articolul „Tipul unei variabile în Java” pentru a vedea tipurile de variabile folosite în Java.
  • break: cuvântul break are rolul de a opri instrucțiunea switch. După ce se execută codul unui caz, este recomandat să se pună break pentru a finaliza cu succes instrucțiunea switch. Ce se întâmplă dacă nu este pus cuvântul break? Se trece la următorul caz și se execută până la primul break sau până la finalul instrucțiunii switch. Din moment ce s-a găsit cazul compatibil, următoarele cazuri nu mai trebuie să „puște”, ci vor fi executate rând pe rând. Fii atent la cuvântul break când folosești switch!
  • default: dacă se-ntâmplă să nu „puște” nimic și niciun caz să n-aibă valoarea pusă la switch, atunci e bine să pui la default codul pe care vrei să-l afișezi în mod implicit. Instrucțiunea default este opțională.

Exemplu fără break 🔗

 
int a = 1;
switch(a) {
    case 1:
         System.out.println("Unu");
    case 2:
         System.out.println("Doi");
    case 3:
         System.out.println("Trei");
         break;
}
/* 
Afișează:
Unu
Doi
Trei
*/

Ce se întâmplă în exemplul anterior? Valoarea variabilei lui a este 1, switch îl „are” pe a, intrăm în switch și verificăm fiecare caz.

Spre fericirea noastră, primul caz are valoarea egală cu ceea ce avem nevoie și se afișează textul „Unu”. Spre surprinderea noastră, programul continuă și afișează textul „Doi”. Spre uimirea noastră, programul afișează și textul „Trei”, apoi se oprește.

De ce s-a dus în „cascadă”? Pentru că nu a găsit cuvântul break. Dacă puneam break după ce afișam textul „Unu”, atunci se finaliza cu succes instrucțiunea switch.

Oricum s-a finalizat cu succes, nu am avut vreo eroare, dar logica programului a fost greșită. A fost pur și simplu un bug.


Exemplu cu default 🔗

 
int a = 2;
switch(a) {
    case 1:
         System.out.println("Unu");
         break;
    case 3:
         System.out.println("Trei");
         break;
    case 5:
         System.out.println("Cinci");
         break;
    default:
         System.out.println("Numărul nu a fost găsit!");
}
// Afișează: Numărul nu a fost găsit!

În acest exemplu, cifra 2 nu este în niciunul dintre cazurile prezentate. Ce se întâmplă? Se va executa codul de la default („Numărul nu a fost găsit!”).

Observi că la default nu se mai pune break? Fiind ultima instrucțiune din switch, este irelevant să mai punem break.

Ce zici? Îți place instrucțiunea switch? E mai util să folosești switch decât if…else de N ori. Bineînțeles că ambele variante vor arăta ca turnul Eiffel, dar e mult mai practic să folosești switch.

Hai să finalizăm „en-fanfare” și să ne uităm la o diferențiere dintre un switch în Java și un switch în Kotlin.


Switch în Java vs. when în Kotlin 🔗

Kotlin este limbajul „de jure” pentru a dezvolta aplicații în ecosistemul Android. Totuși, Java a rămas limbajul „de facto”, chiar dacă Google a sărit în mod oficial să-l adopte pe Kotlin. Sunt prea multe proiecte existente în Java și prea costisitor să se mute totul pe Kotlin, chiar dacă Kotlin este un limbaj destul de simplu și eficient.

În Kotlin nu avem instrucțiunea switch, dar avem instrucțiunea when.

Hai să dăm datele unei probleme și să o rezolvăm atât în Java, cât și în Kotlin!

Se dă o variabilă cu numele „numero”, variabilă cu valoarea 3. Să se afișeze numele zilei din săptămână conform valorii variabilei folosind o instrucțiune condițională tip „cascadă”.

Varianta în Java:

 
int numero = 3;
switch(numero) {
    case 1:
         System.out.println("Luni");
         break;
    case 2:
         System.out.println("Marți");
         break;
    case 3:
         System.out.println("Miercuri");
         break;
    case 4:
         System.out.println("Joi");
         break;
    case 5:
         System.out.println("Vineri");
         break;
    case 6:
         System.out.println("Sâmbătă");
         break;
    case 7:
         System.out.println("Duminică");
         break;
    default:
         System.out.println("Nimeni, nimic...");
}

Varianta în Kotlin:

 
val numero = 3
val resultado = when(numero) {
1 -> "Luni"
2 -> "Marți"
3 -> "Miercuri"
4 -> "Joi"
5 -> "Vineri"
6 -> "Sâmbătă"
7 -> "Duminică"
else -> "Nimeni, nimic..."
}
println(resultado)

Ambele afișează textul „Miercuri”. Vezi cât de intuitiv este Kotlin?

Cu ce limbaj de programare seamănă Kotlin? Pare-mi-se că seamănă cu Ruby, în niciun caz cu Java.

Învață să fii profesionist!

By projava.ro

„Binele-i bun atunci când e bine făcut.”

Abonează-te
Primește notificări pentru
guest
0 Comentarii
Cele mai vechi
Cele mai noi Cele mai votate
Păreri...
Vezi toate comentariile