Bit-bit & vs logički && operateri
1. Uvod
U Javi imamo dva načina da kažemo "I". Ali što koristiti?
U ovom uputstvu pogledat ćemo razlike između & i &&. I usput ćemo naučiti o bitnim operacijama i kratkom spoju.
2. Upotreba bit-a I
Bitni operator AND (&) uspoređuje svaku binarnu znamenku dviju cijelih brojeva i vraća 1 ako su oba 1, u suprotnom vraća 0.
Pogledajmo dvije cijele brojeve:
int šest = 6; int pet = 5;
Dalje, primijenimo bitni operator AND na ove brojeve:
int resultShouldBeFour = šest i pet; assertEquals (4, resultShouldBeFour);
Da bismo razumjeli ovu operaciju, pogledajmo binarni prikaz svakog broja:
Binarni decimalni 4: 0100 Binarni decimalni 5: 0101 Binarni decimalni 6: 0110
Operator & izvodi logički I na svakom bitu i vraća novi binarni broj:
0110 0101 ----- 0100
Napokon, naš rezultat - 0100 – može se pretvoriti natrag u decimalni broj - 4.
Pogledajmo testni Java kôd:
int šest = 6; int pet = 5; int resultShouldBeFour = šest i pet; assertEquals (4, resultShouldBeFour);
2.1. Upotreba & s logičkim vrijednostima
Također, možemo koristiti bitni AND (&) operator sa boolean operandi. Vraća se pravi samo ako su oba operanda pravi, u suprotnom, vraća se lažno.
Uzmimo tri boolean varijable:
boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;
Dalje, primijenimo bitni operator AND na varijable trueBool i drugiTrueBool:
boolean trueANDtrue = trueBool & anotherTrueBool;
Tada će rezultat biti pravi.
Dalje, primijenimo bitni I operator na trueBool i falseBool:
boolean trueANDFalse = trueBool & falseBool;
U ovom će slučaju rezultat biti lažno.
Pogledajmo testni Java kôd:
boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean trueANDtrue = trueBool & anotherTrueBool; boolean trueANDFalse = trueBool & falseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse);
3. Korištenje logičkog I
Kao &, logično I (&&) operator uspoređuje vrijednost dviju logičkih varijabli ili izraza. I, također se vraća pravi samo ako su oba operanda pravi, u suprotnom, vraća se lažno.
Uzmimo tri boolean varijable:
boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;
Dalje, primijenimo logički operator AND na varijable trueBool i drugiTrueBool:
boolean trueANDtrue = trueBool && anotherTrueBool;
Tada će rezultat biti pravi.
Dalje, primijenimo logički operator AND na trueBool i falseBool:
boolean trueANDFalse = trueBool && falseBool;
U ovom će slučaju rezultat biti lažno.
Pogledajmo testni Java kôd:
boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean anotherFalseBool = false; boolean trueANDtrue = trueBool && anotherTrueBool; boolean trueANDFalse = trueBool && falseBool; boolean falseANDFalse = falseBool && anotherFalseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse); assertFalse (falseANDFalse);
3.1. Kratki spoj
Pa, u čemu je razlika? Dobro, the && kratki spojevi operatora. To znači da ne procjenjuje desni bočni operand ili izraz kada je lijevi bočni operand ili izraz lažno.
Uzmimo dva izraza koji ocjenjuju kao lažni:
Prvi izraz: 2 <1 Drugi izraz: 4 <5
Kada primijenimo logički operator AND na izraze 2<1 i 4<5, tada ocjenjuje samo prvi izraz 2<1 i vraća se lažno.
logički shortCircuitResult = (2 <1) && (4 <5); assertFalse (shortCircuitResult);
3.2. Korištenje && s cijelim brojevima
Operator & možemo koristiti s logičkim ili numeričkim vrstama, ali && možemo koristiti samo s logičkim operandima. Korištenje s cjelobrojnim operandima rezultira pogreškom kompilacije:
int pet = 2; int šest = 4; int rezultat = pet && šest;
4. Usporedba
- Operator & uvijek procjenjuje oba izraza, dok operator && procjenjuje drugi izraz samo ako je prvi pravi
- & uspoređuje svaki operand u bitovima, dok && radi samo na logičkim vrijednostima
5. Zaključak
U ovom smo članku koristili bitne značajke & operator za usporedbu bitova od dvije znamenke što rezultira novom znamenkom. Također, koristili smo logičko && operator za usporedbu dvaju logičkih vrijednosti, što rezultira logičkom vrijednošću.
Također smo vidjeli neke ključne razlike između dva operatora.
Kao i uvijek kod za ovaj vodič možete pronaći na GitHub-u.