Bitenkénti és vs logikai és operátorok
1. Bemutatkozás
A Java-ban kétféleképpen lehet „ÉS” -et mondani. De melyiket kell használni?
Ebben az oktatóanyagban megvizsgáljuk a & és && közötti különbségeket. Ezenkívül megismerkedünk a bitenkénti műveletekkel és a rövidzárlatokkal.
2. A Bitwise használata ÉS
A bitenkénti AND (&) operátor összehasonlítja két egész szám bináris számjegyét, és 1-et ad vissza, ha mindkettő 1, ellenkező esetben 0-t ad vissza.
Vessünk egy pillantást két egész számra:
int hat = 6; int öt = 5;
Ezután alkalmazzunk bitenként AND operátort ezekre a számokra:
int resultShouldBeFour = hat & öt; assertEquals (4, resultShouldBeFour);
A művelet megértéséhez nézzük meg az egyes számok bináris ábrázolását:
4: 0100 tizedes binárisa: 5: 0101 tizedes bináris: 6: 0110 tizedes bináris
Az & operátor minden bitnél logikai AND-t hajt végre, és új bináris számot ad vissza:
0110 0101 ----- 0100
Végül az eredményünk - 0100 – visszaállítható decimális számra - 4.
Lássuk a teszt Java kódot:
int hat = 6; int öt = 5; int resultShouldBeFour = hat & öt; assertEquals (4, resultShouldBeFour);
2.1. A & Booleans használatával
Használhatjuk a bitenkénti AND (&) üzemeltető logikai operandusok. Visszatér igaz csak ha mindkét operandus igaz, különben visszatér hamis.
Vegyünk hármat logikai változók:
logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis;
Ezután alkalmazzunk bitenként ÉS operátort a változókra trueBool és anotherTrueBool:
logikai trueANDtrue = trueBool és egy másikTrueBool;
Akkor az eredmény meglesz igaz.
Ezután alkalmazzuk a bitenkénti ÉS operátort trueBool és falseBool:
logikai trueANDFalse = trueBool & falseBool;
Ebben az esetben az eredmény az lesz hamis.
Lássuk a teszt Java kódot:
logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis; logikai trueANDtrue = trueBool és egy másikTrueBool; logikai trueANDFalse = trueBool & falseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse);
3. A Logical használata ÉS
Mint &, a logikai ÉS (&&) operátor összehasonlítja két logikai változó vagy kifejezés értékét. És visszatér igaz csak ha mindkét operandus igaz, különben visszatér hamis.
Vegyünk hármat logikai változók:
logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis;
Ezután alkalmazzunk egy logikai ÉS operátort a változókra trueBool és anotherTrueBool:
logikai trueANDtrue = trueBool && anotherTrueBool;
Akkor az eredmény meglesz igaz.
Ezután alkalmazzunk egy logikai ÉS operátort trueBool és falseBool:
logikai trueANDFalse = trueBool && falseBool;
Ebben az esetben az eredmény az lesz hamis.
Lássuk a teszt Java kódot:
logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis; logikai másikFalseBool = hamis; logikai trueANDtrue = trueBool && anotherTrueBool; logikai trueANDFalse = trueBool && falseBool; logikai hamisANDFalse = falseBool && anotherFalseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse); assertFalse (falseANDFalse);
3.1. Rövidzárlat
Szóval, mi a különbség? Jól, a && kezelő rövidzárlat. Ez azt jelenti, hogy nem értékeli a jobb oldali operandust vagy kifejezést, amikor a bal oldali operandus vagy kifejezés az hamis.
Vegyünk két kifejezést, amelyek hamisnak minősülnek:
Első kifejezés: 2 <1 Második kifejezés: 4 <5
Amikor logikai ÉS operátort alkalmazunk a kifejezésekre 2<1 és 4<5, akkor csak az első kifejezést értékeli 2<1 és visszatér hamis.
logikai rövidzárlat eredmény = (2 <1) && (4 <5); assertFalse (shortCircuitResult);
3.2. Az && használata egész számokkal
A & operátort logikai vagy numerikus típusokkal használhatjuk, de a && csak logikai operandusokkal használható. Egész operandusokkal történő használata fordítási hibát eredményez:
int öt = 2; int hat = 4; int eredmény = öt && hat;
4. Összehasonlítás
- Az & operátor mindig mindkét kifejezést, míg az && operátor csak a második kifejezést értékeli, ha az első igaz
- Az & összehasonlítja az egyes operandusokat bitenként, míg az && csak logikai értékeken működik
5. Következtetés
Ebben a cikkben bitenként használtuk & operátor két számjegy bitjeinek összehasonlításához új számjegyet eredményez. Ezenkívül a logikát használtuk && operátor két logikai érték összehasonlítására, logikai értéket eredményezve.
Néhány kulcsfontosságú különbséget is láttunk a két operátor között.
Mint mindig, az oktatóanyag kódját is megtalálhatja a GitHubon.