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

  1. Operator & uvijek procjenjuje oba izraza, dok operator && procjenjuje drugi izraz samo ako je prvi pravi
  2. & 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.