Expresiile condiționale
Expresiile condiționale reprezintă o anumită condiție și returnează o valoare de tip boolean, adică valoarea true (dacă condiția este adevărată) sau valoarea false (dacă condiția este falsă). Expresiile condiționale includ operații de comparație și operații logice.
Operații de comparație
În operațiile de comparație, se compară doi operanzi și se returnează o valoare de tip boolean - true dacă expresia este adevărată și false dacă expresia este falsă.
- ==
Compara operanzii pentru egalitate și returnează true (dacă operanzii sunt egali) și false (dacă operanzii nu sunt egali):
int a = 10;
int b = 4;
boolean c = a == b; // false
boolean d = a == 10; // true
- !=
Compara operanzii și returnează true dacă operanzii NU sunt egali și false dacă operanzii sunt egali:
int a = 10;
int b = 4;
boolean c = a != b; // true
boolean d = a != 10; // false
- < (mai mic decât)
Returnează true dacă primul operand este mai mic decât al doilea, altfel returnează false:
int a = 10;
int b = 4;
boolean c = a < b; // false
- > (mai mare decât)
Returnează true dacă primul operand este mai mare decât al doilea, altfel returnează false:
int a = 10;
int b = 4;
boolean c = a > b; // true
- >= (mai mare sau egal)
Returnează true dacă primul operand este mai mare sau egal cu al doilea, altfel returnează false:
boolean c = 10 >= 10; // true
boolean b = 10 >= 4; // true
boolean d = 10 >= 20; // false
<= (mai mic sau egal)
Returnează true dacă primul operand este mai mic sau egal cu al doilea, altfel returnează false:
boolean c = 10 <= 10; // true
boolean b = 10 <= 4; // false
boolean d = 10 <= 20; // true
Operații logice
De asemenea, în Java există operații logice care reprezintă condiții și returnează true sau false și care, de obicei, combină mai multe operații de comparație. Operațiile logice includ:
- "|" - c = a | b; (c este true dacă fie a, fie b (sau ambele) sunt true, altfel c va fi false)
- "&" - c = a & b; (c este true dacă atât a, cât și b sunt true, altfel c va fi false)
- "!" - c = !b; (c este true dacă b este false, altfel c va fi false)
- "^" - c = a ^ b; (c este true dacă fie a, fie b (dar nu ambele) sunt true, altfel c va fi false)
- "||" - c = a || b; (c este true dacă fie a, fie b (sau ambele) sunt true, altfel c va fi false)
- "&&" - c = a && b; (c este true dacă atât a, cât și b sunt true, altfel c va fi false)
Există două perechi de operații: | și || (precum și & și &&) care efectuează acțiuni similare, însă nu sunt echivalente.
Expresia c = a | b; va calcula mai întâi valorile lui a și b și va produce rezultatul pe baza acestora.
În schimb, în expresia c = a || b; se va calcula mai întâi valoarea lui a și, dacă a este true, nu se mai calculează valoarea lui b, deoarece c va fi deja true. Valoarea lui b va fi calculată doar dacă a este false.
Același lucru este valabil și pentru perechea de operații &/&&. În expresia c = a & b;, se vor calcula ambele valori - a și b.
În expresia c = a && b;, se va calcula mai întâi valoarea lui a și, dacă a este false, nu mai are sens calcularea valorii lui b, deoarece valoarea lui c va fi false. Valoarea lui b va fi calculată doar dacă a este true.
Astfel, operațiile || și && sunt mai eficiente în calcul, deoarece reduc timpul necesar pentru a determina valoarea unei expresii și, prin urmare, îmbunătățesc performanța. Operațiile | și & sunt mai potrivite pentru operații pe biți.
Exemple:
boolean a1 = (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, returnează true
boolean a2 = (5 > 6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, returnează false
boolean a3 = (5 > 6) && (4 < 6); // 5 > 6 - false, returnează false (4 < 6 - true, dar nu se calculează)
boolean a4 = (50 > 6) && (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, returnează true
boolean a5 = (5 < 6) ^ (4 > 6); // 5 < 6 - true, returnează true (4 > 6 - false)
boolean a6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, returnează false