CodeGym /Java blog /Véletlen /Java logikai
John Squirrels
Szint
San Francisco

Java logikai

Megjelent a csoportban
A „boolean” szó a Java nyelv kontextusában különböző, bár nagyon rokon jelentésekben használható. Lehet, hogy:
  • logikai primitív típus vagy ilyen típusú logikai változó
  • Java logikai osztály vagy logikai wrapper objektum
  • Logikai kifejezés, logikai érték, valamilyen feltétel
  • Java logikai operátorok
Ebben a cikkben ezeket a lehetőségeket ismertetjük, és elmagyarázzuk, hogy milyen fogalmak állnak a logikai kifejezések mögött. Java logikai - 1

Mi az általános értelemben vett logikai érték

A Boole-féle kifejezés fogalma a matematikából, vagy inkább a matematikai logikából származik. A logikai kifejezés a propozíciós algebrában olyan kifejezés, amelyről elmondható, hogy igaz vagy hamis. Például:
"Fehér a hó" "A krokodilok tudnak repülni" "2 + 2 = 4" "1 + 1 = 21"
Ugyanakkor a "2" vagy a "hó" nem logikai kifejezések.

Java logikai primitív adattípus és logikai változók

Ha a Java logikai értékéről beszélünk, először is valószínűleg egy logikai primitív adattípusról és az ilyen típusú logikai változókról van szó. Ahogy valószínűleg már sejtette, az ilyen típusú változók csak két értéket vehetnek fel, igazat és hamisat. A Java meglehetősen szigorú korlátozásokkal rendelkezik: a Java logikai értéke nem konvertálható semmilyen más adattípusra, és fordítva. Különösen a Java logikai értéke nem integrált típus, és egész értékek nem használhatók logikai értékek helyett. Íme egy példa a logikai típus közvetlen beállítására:

boolean myBoolean; //boolean variable
myBoolean = false; 
boolean myBoolean1 = true; //another boolean variable
Itt van 2 logikai változónk. Írjunk egy kis programot egy logikai típus használatára vonatkozó példával:

//boolean variable example
public class BoolTest {

   public static void main(String[] args) {
       boolean myBoolean = false;
       System.out.println(myBoolean);
   }
}
Ez a program „false”-t nyomtat a konzolra. Egyébként egy logikai változó alapértelmezés szerint false, de a Java nem teszi lehetővé az inicializálatlan helyi változókkal való munkát.

Logikai kifejezések Java nyelven

A logikai változók igaz vagy hamis értékre való explicit inicializálása mellett a logikai adattípust sok helyen implicit módon használják. Ahogy a számok bármilyen összeadásának eredménye szám lesz, úgy minden összehasonlítás eredménye igaz vagy hamis, azaz logikai típusú lesz . Ez azt jelenti, hogy a logikai érték közvetlen megadása mellett a logikai változó-hozzárendelési utasításon keresztül a logikai értékek különböző összehasonlításokból származnak, például 5 > 2 , és elsősorban feltételes és ciklusutasításokban használatosak. Íme egy példa a logikai típus ilyen használatára :

public class BoolTest {

   public static void main(String[] args) {
       boolean myBoolean = false;
       int a = 5;
       int b = 7;
       System.out.println(a < b);
       System.out.println(0 > 7);
       System.out.println(myBoolean == false);
   }
}
A kimenet a következő:
igaz hamis igaz
A < b esetén a < operátor összehasonlította a bal oldali kifejezést a jobb oldali kifejezéssel. Az összehasonlítás eredményét megjelenítettük a képernyőn. Mivel 5 < 7 (az állítás igaz), az igaz érték kerül kinyomtatásra a konzolra. A második esetben nulla és hét közvetlen összehasonlítását jelenítjük meg, a harmadikban pedig azt kérdezzük meg, hogy a myBoolean változó értéke hamis-e. Mivel ez a helyzet, a true értéket adjuk ki . Valójában logikai kifejezések létrehozásához Java nyelven bármilyen összehasonlító operátort használhatunk:
összehasonlító operátorok Java operátor Működési példa A művelet eredménye
Kevésbé < a < b igaz , ha a kisebb, mint b , egyébként hamis
Nagyobb > a > b igaz , ha a nagyobb, mint b , egyébként hamis
Kisebb vagy egyenlő <= a <= b igaz , ha a kisebb, mint b , vagy egyenlőek, egyébként hamis
Nagyobb vagy egyenlő >= a >= b igaz , ha a nagyobb vagy egyenlő b -vel , egyébként hamis
Egyenlő == a == b igaz , ha a egyenlő b -vel , egyébként hamis
Nem egyenlő != a != b igaz , ha a nem egyenlő b -vel , egyébként hamis

Ahol logikai értékeket használnak

A logikai értékeket és a feltételes kifejezéseket nagyon gyakran használják elágazási utasítások, háromtagú operátorok és ciklusok feltételeiben. Valójában használatuk bizonyos logikai kifejezések ellenőrzésén alapul . Például:

public class BoolTest2 {
       public static void main(String[] args) {
           int i = 0;
           while (i <= 10)
           {
               System.out.println(i);
               i++;
           }         
      }
}
Ez a program kiír egy egész számsorozatot, és eggyel növeli őket, amíg a zárójelben lévő feltétel teljesül. Vagyis míg az i <=10 kifejezés igaz.

Java logikai operátorok. Logikai kifejezések készítése logikai operátorokkal

A következő logikai (vagy logikai) műveletek érhetők el Java nyelven:
  • Logikai tagadás, ez is NEM vagy inverzió. Java nyelven a szimbólum jelöli ! kifejezés előtt.

  • Logikai és, ez is ÉS vagy kötőszó. Jelölje a & szimbólum a két kifejezés között, amelyre vonatkozik.

  • Logikai vagy Java-ban ez is VAGY, ez is diszjunkció. Java nyelven a | szimbólummal jelölve két kifejezés között.

  • Kizárólagos vagy, XOR, szigorú diszjunkció. Java nyelven a ^ szimbólum jelöli két kifejezés között.

  • A Java nyelvben a logikai operátorok közé tartozik a feltételes vagy a || jelöléssel , valamint a feltételes és, && .

Vessünk egy pillantást a táblázatra a Java logikai operátorok rövid leírásával, az alábbiakban pedig részletesebben leírjuk őket, és kódpéldákat adunk. A táblázatban szereplő „operandusok” alatt azt a logikai kifejezést vagy változókat értjük, amelyekre az operátort alkalmazzuk.

a | b == true
Logikai Java operátor Név típus Leírás Példa
! Logikai „nem” (tagadás) egységes Az !x azt jelenti, hogy „nem x”. Igaz értéket ad vissza , ha x hamis . Hamis értéket ad vissza , ha x igaz .

boolean x = true;

akkor


// !x == false
& Logikai "és" (és logikai szorzás) bináris (a & b) igazat ad vissza , ha a és b is igaz .

a = true;
b = false;

akkor


a & b == false
| Logikai VAGY (logikai összeadás) bináris (a | b) igazat ad vissza , ha a vagy b vagy mindkettő igaz .

a = true;
b = false;

akkor

^ Logikai kizárólagos VAGY (XOR) bináris (a ^ b) igaz értékkel tér vissza , ha az (a vagy b) operandusok közül csak az egyik igaz . Hamis értéket ad vissza , ha a és b egyszerre igaz vagy hamis. Valójában ha a nem egyenlő b -vel , akkor igazat ad vissza .

a = true;
b = false;

akkor


a ^ b == true
&& Feltételes ÉS (rövidítve logikai ÉS) bináris a && b Ugyanaz, mint az a & b , de ha a hamis , az operátor csak false értéket ad vissza a b ellenőrzése nélkül .
|| Feltételes VAGY (rövidített logikai VAGY) bináris a || b ugyanaz, mint a | b , de ha a igaz , az operátor csak igazat ad vissza b ellenőrzése nélkül .
Ne feledje, hogy a Java nyelvben a & , | operátorok és ^ egész számokra is vonatkozik. Ebben az esetben egy kicsit másképp működnek, és bitenkénti (vagy bitenkénti) logikai operátoroknak nevezik őket. Vegyünk egy példát, és jelenítsünk meg több logikai kifejezést, amelyek logikai operátorok felhasználásával készültek.

public class BoolTest2 {
   public static void main(String[] args) {
   int a = 5;
   int b = 7;
   boolean myBool1 = true;
   boolean myBool2 = false;
       System.out.println(myBool1&myBool2);
       System.out.println(myBool1|myBool2);
       System.out.println(!myBool1);
       System.out.println((a > b) & !myBool1 | myBool2);
   }
}
Íme a kimenet:
hamis igaz hamis hamis
Valójában nagyon összetett logikai konstrukciókat készíthet logikai operátorok segítségével. például
(a<!b)&(q+1 == 12)^(!a | c & b > 1 + b)|(q ^ a > !b)
Ha minden változó inicializálva van, az ilyen konstrukciók működni fognak. Nem szabad azonban visszaélni velük, megnehezítik a kód olvasását. Ennek ellenére nagyon hasznos ilyen logikai konstrukciókkal foglalkozni. Próbáljon meg logikai kifejezéseket készíteni a táblázatban megadott egyéb logikai operátorokkal.

A logikai műveletek elsőbbsége

Akárcsak a matematikában, a programozásban az operátoroknak meghatározott végrehajtási sorrendjük van, ha ugyanabban a kifejezésben fordulnak elő. Az unáris operátorok előnyökkel járnak a binárisokkal, a szorzás (akár logikai) pedig az összeadással szemben. Íme a logikai operátorok a témakörök listájában magasabbra helyezve, minél magasabb prioritást élveznek:
  • !

  • &

  • ^

  • |

  • &&

  • ||

Java logikai burkoló

A Java-ban minden primitív típusnak van egy "testvére", egy wrapper osztály ( Wrapper ). A wrapper egy speciális osztály, amely egy primitív belsejében tárolja az értékét. Ez azonban egy osztály, így létrehozhat belőle példányokat (objektumokat). Ezek az objektumok belül tárolják a primitívek szükséges értékeit, miközben valódi objektumok lesznek. A Java logikai primitív típusnak van egy Java Boolean (nagy B nagybetűs) osztálya. A logikai osztályú objektumok ugyanúgy jönnek létre, mint a többi:

Boolean b = new Boolean(false);
A Java Boolean osztálynak hasznos metódusai vannak. Ezek közül az egyik legérdekesebb a parseBoolean módszer. static Boolean parseBoolean(String s) metódus logikai értékként értelmezi a string argumentumot. A visszaadott logikai érték az igaz értéket képviseli, ha a string argumentum nem nulla, és egyenlő a kis- és nagybetűk figyelmen kívül hagyásával az „igaz” karakterlánccal. Ellenkező esetben hamis értéket ad vissza .

parseBoolean módszer példa


public class BoolTest2 {

        public static void main(String[] args)
        {
            System.out.println(Boolean.parseBoolean("True"));
            System.out.println(Boolean.parseBoolean("TRuE"));
            System.out.println(Boolean.parseBoolean("False"));
            System.out.println(Boolean.parseBoolean("here"));

        }
    }
A kimenet a következő:
igaz igaz hamis hamis
A tanultak megerősítése érdekében javasoljuk, hogy nézzen meg egy videóleckét a Java-tanfolyamról
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION