Diagramă de comparație
Bazele comparației | & | && |
---|---|---|
Operator | Este un "Operator Bitwise". | Este un "operator logic". |
Evaluare | Evaluează atât partea stângă, cât și cea dreaptă a expresiei. | Evaluează doar partea stângă a expresiei. |
Funcționează | Funcționează pe "date booleene", precum și pe "biți". | Funcționează numai pe tipul de date boolean. |
Utilizare | Utilizați pentru a verifica starea logică și, de asemenea, pentru a masca anumite biți, cum ar fi biți de paritate. | Folosit numai pentru a verifica starea logică. |
Definiția & (Bitwise AND)
Acest operator '&' este utilizat atât ca operator, cât și pentru un operator logic (&) și un operator bitwise. Funcționează atât pe datele booleene, cât și pe cele binare. Atunci când & operator este folosit ca operator logic și atunci, rezultă în "true" dacă ambele părți ale expresiei de evaluare sunt adevărate, altfel se întoarce "false". Aceasta permite compilatorului să evalueze ambele părți ale expresiei. Aceasta înseamnă că, chiar dacă partea stângă a expresiei are rezultate false, ea evaluează partea dreaptă a expresiei.
Ne permite să înțelegem acest lucru cu un exemplu.
int = 4, b = 5; sistem.out.println ((a == 6) și (b ++ == 6)); sistem.out.println ("b =" + b); // output false b = 5
Aici, evaluând partea stângă a expresiei (a == 6), rezultă în falsă, operatorul și apoi evaluează partea dreaptă a expresiei (b ++ == 6) ca rezultat, valoarea incrementărilor b.
Atunci când '&' este folosit ca un "operator bitwise", mai întâi convertește ambele operanzi în formă binară și apoi operează pe acesta folosind operatorul & bit-by-bit. După operație, rezultatul obținut este în formă binară, care este apoi transformat în zecimal. Orice bit care este 0 în oricare dintre operanzi are 0. Dacă ambii biți ai operanzi sunt 1, atunci bitul rezultat este 1. Bitul și operatorul sunt guvernate de aceeași tabelă de adevăr ca și prin operatorul logic și operatorul său.
Să vedem operația bitwise a operatorului.
int a; a = 3 și 4; // 011 & 100 = 000 sistem.out.println ("a =" + a); // ieșire a = 0
Aici, valoarea zecimală 3 și 4 este inițial convertită în forma lor binară, iar operatorul & bitwise execută operația pe ele bit-by-bit. Rezultatul obținut este în formă binară, care este apoi convertit în formă zecimală din nou.
Definiția && (Short-circuit AND)
Acest operator && funcționează în totalitate ca un operator logic. Funcționează numai pe tipul de date boolean. Se mai numește operator de scurt-circuit. Întrucât verifică doar partea stângă a expresiei. Dacă partea stângă a expresiei duce la falsă, atunci nu se deranjează să evalueze partea dreaptă a expresiei.
Ne permite să înțelegem funcționarea operatorului && cu un exemplu.
int = 4, b = 5; sistem.out.println ((a == 6) && (b ++ == 6)); sistem.out.println ("b =" + b); // output false b = 4
Aici, deoarece condiția (a == 6) este falsă, operatorul && nu evaluează expresia (b ++ == 6) ca rezultat, valoarea b nu crește.
Diferențe cheie între & și &&
- Operatorul & este un operator logic și un bitwise, deoarece funcționează atât pe booleani, cât și pe date binare, în timp ce operatorul && este doar un operator logic deoarece funcționează numai pe un tip de date boolean.
- Operatorul & evaluează ambele părți ale expresiei pentru a obține rezultatul final, în timp ce operatorul && evaluează numai partea stângă a expresiei și, dacă se dovedește falsă, nici măcar nu evaluează partea dreaptă a expresiei.
Notă:
În timp ce evaluează tipul de date boolean, ambii operatori rezultă "adevărat" numai dacă ambele operand sunt adevărate, altfel se întoarce "false".
Concluzie:
Operatorii & și &&, ambii sunt utilizați pentru a evalua starea booleană, în timp ce operatorul & este folosit și pentru operația bitwise. Atunci când este necesar să evaluăm ambele părți ale expresiei, operatorul & & este folosit altceva, putem folosi && operatorul.