Bitwise & vs Logical && Operators

1. Inleiding

In Java hebben we twee manieren om "EN" te zeggen. Maar welke te gebruiken?

In deze tutorial kijken we naar de verschillen tussen & en &&. En we zullen onderweg leren over bitsgewijze bewerkingen en kortsluiting.

2. Gebruik van Bitwise EN

De bitsgewijze operator AND (&) vergelijkt elk binair cijfer van twee gehele getallen en retourneert 1 als beide 1 zijn, anders retourneert het 0.

Laten we eens kijken naar twee gehele getallen:

int zes = 6; int vijf = 5;

Laten we vervolgens een bitsgewijze AND-operator toepassen op deze getallen:

int resultShouldBeFour = zes & vijf; assertEquals (4, resultShouldBeFour);

Laten we, om deze bewerking te begrijpen, naar de binaire weergave van elk getal kijken:

Binair van decimaal 4: 0100 Binair van decimaal 5: 0101 Binair van decimaal 6: 0110

De operator & voert een logische AND uit op elke bit en retourneert een nieuw binair getal:

0110 0101 ----- 0100

Eindelijk ons ​​resultaat - 0100 – kan terug worden geconverteerd naar een decimaal getal - 4.

Laten we eens kijken naar de test Java-code:

int zes = 6; int vijf = 5; int resultShouldBeFour = zes & vijf; assertEquals (4, resultShouldBeFour);

2.1. Gebruik van & met Booleans

We kunnen ook de bitsgewijze AND (&) operator met boolean operanden. Het keert terug waar alleen als beide operanden zijn waaranders keert het terug false.

Laten we er drie nemen boolean variabelen:

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;

Laten we vervolgens een bitsgewijze AND-operator toepassen op variabelen trueBool en anotherTrueBool:

boolean trueANDtrue = trueBool & anotherTrueBool;

Dan zal het resultaat zijn waar.

Laten we vervolgens een bitgewijze AND-operator toepassen op trueBool en falseBool:

boolean trueANDFalse = trueBool & falseBool;

In dit geval is het resultaat false.

Laten we eens kijken naar de test Java-code:

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean trueANDtrue = trueBool & anotherTrueBool; boolean trueANDFalse = trueBool & falseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse);

3. Gebruik van logisch EN

Leuk vinden &, de logische AND (&&) operator vergelijkt de waarde van twee Booleaanse variabelen of uitdrukkingen. En het keert ook terug waar alleen als beide operanden zijn waaranders keert het terug false.

Laten we er drie nemen boolean variabelen:

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;

Laten we vervolgens een logische AND-operator op variabelen toepassen trueBool en anotherTrueBool:

boolean trueANDtrue = trueBool && anotherTrueBool;

Dan zal het resultaat zijn waar.

Laten we vervolgens een logische AND-operator toepassen op trueBool en falseBool:

boolean trueANDFalse = trueBool && falseBool;

In dit geval is het resultaat false.

Laten we eens kijken naar de test Java-code:

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. Kortsluiting

Dus, wat is het verschil? Goed, de && kortsluitingen van de operator. Dit betekent dat het de operand of expressie aan de rechterkant niet evalueert wanneer de operand of expressie aan de linkerkant dat wel is false.

Laten we twee uitdrukkingen nemen die als onwaar evalueren:

Eerste uitdrukking: 2 <1 Tweede uitdrukking: 4 <5 

Wanneer we een logische AND-operator toepassen op expressies 2<1 en 4<5, dan evalueert het alleen de eerste uitdrukking 2<1 en keert terug false.

boolean shortCircuitResult = (2 <1) && (4 <5); assertFalse (shortCircuitResult);

3.2. Gebruik van && met gehele getallen

We kunnen de operator & gebruiken met booleaanse of numerieke typen, maar && kan alleen worden gebruikt met booleaanse operanden. Het gebruik ervan met gehele operanden resulteert in een compilatiefout:

int vijf = 2; int zes = 4; int resultaat = vijf && zes;

4. Vergelijking

  1. De operator & evalueert altijd beide expressies, terwijl de operator && de tweede expressie alleen evalueert als de eerste dat is waar
  2. & vergelijkt elke operand bitgewijs, terwijl && alleen op booleans werkt

5. Conclusie

In dit artikel hebben we de bitwise gebruikt & operator om bits van twee cijfers te vergelijken, wat resulteert in een nieuw cijfer. We gebruikten ook de logische && operator om twee booleans te vergelijken, wat resulteert in een booleaanse waarde.

We zagen ook enkele belangrijke verschillen tussen de twee operators.

Zoals altijd kun je de code voor deze tutorial vinden op GitHub.