Operatorii logici binari sunt operatori fără efect lateral,
prin care se realizează operațiile logice ȘI, SAU și SAU-EXCLUSIV.
- Operatorii & si && realizeaza
operatia logica ȘI. Expresiile a&b și a&&b ,în
care a și b sunt operanzi de tip boolean, are valoarea true(adevărat)
dacă și numai dacă atât a cât și b au valoarea true.
În celelalte cazuri expresia are valoarea false.
- Operatorii | si || realizează operația logică
SAU. Expresiile a|b și a||b , în care a și b sunt
operanzi de tip boolean, are valoarea false dacă și numai dacă
ambii operanzi au valoarea false. În celelalte cazuri
expresia are valoarea true.
- Operatorul ^ realizează operatia logică SAU-EXCLUSIV.
Expresia a^b , în care a și b sunt operanzi
de tip boolean, are valoarea true dacă și numai dacă cei doi
operanzi au valori diferite (unul este adevărat, iar celălalt fals).
Dacă cei doi operanzi au valori identice, valoarea expresiei este false.
Deosebirile între operatorii & și &&,
respectiv între | și || sunt următoarele: - în cazul operatorilor & și | se evaluează în mod obligatoriu ambii operanzi; - în cazul operatorului &&, numit ȘI-condițional, evaluarea celui de al doilea operand se face numai dacă primul operand are valoarea true; altfel, se consideră că operația dă valoarea false, fără a se mai evalua valoarea celui de al doilea operand; - în cazul operatorului ||, numit SAU-condițional, evaluarea celui de al doilea operand se face numai dacă primul operand are valoarea false; altfel, se consideră ca operația dă valoarea true, fără a se mai evalua valoarea celui de al doilea operand. Vom reveni asupra acestor deosebiri când vom arăta cum sunt tratate în Java expresiile logice mai complicate. Acțiunea operatorilor logici este prezentată sintetic în tabela de mai jos, în care a și b sunt doi operanzi logici.
|
În programul din fișierul TipBoolean.java
se testează unele din aceste operații booleene.
/* Testarea declararii variabilelor booleene si a
efectului operatiilor logice */ class TipBoolean { |
Executând acest program se obține următorul rezultat afișat pe
ecran:
alpha=true beta=false p=false
q=false r=true s=true alpha&&beta=false alpha||beta=true alpha==beta: false alpha!=beta: true |
Se observă cu ușurință că rezultatele sunt corecte.
Pentru programatorii de C/C++
În limbajele C/C++ nu există tipul de date boolean, astfel că în locul acestuia se folosesc datele întregi. În consecință, în aceste limbaje, operatorii & si | nu sunt considerați operatori booleeni ci operatori logici pe biți. În Java nu este permis să se utilizeze expresii aritmetice în locul unor expresii logice (booleene), așa cum se întâmplă în C/C++. |