10.3  Boolsche Operatoren in Java
 
Boolesche Variable Variable vom Typ boolean können nur zwei Werte annehmen: true oder false (realisiert als 1 bzw.0).
Initialisierung und Deklaration können folgende Gestalt haben.

boolean a;
a = true;


oder:
boolean a = true;

aber auch folgende Zuweisung  ist möglich, ja wird häufig benutzt:
boolean a;
a = (3 == Console.in.readInt());

In letzten Fall wird über die
readInt()-Methode der Wert einer Integer-Zahl eingelesen. Danach wird der Ausdruck 3 == Console.in.readInt() ausgewertet. War der eingegebene Wert 3, so liefert die Auswertung den Booleschen Wert true sonst false.
logische Operatoren Um boolsche Ausdrücke miteinander verknüpfen zu können, gibt es ein- und zweistellige Operationen:
  • &&, & und-Operatoren, sind zweistellig z.B. a&&b bzw. a&b und entsprechen dem logischen und.
  • ||, | oder-Operatoren, sind zweistellig z.B. a||b bzw. a|b und entsprechen dem logischen oder.
  • ! der Nicht-Operator, ist einstellig, z.B. !a und entspricht dem nicht a.

Warum es zwei und- und zwei oder-Operatoren?
Ist in
a&&b der Wert von a false, so kann a&&b nur noch zu false ausgewertet werden, d.h. der Wert von b braucht in diesem Fall nicht mehr abgefragt werden. In a&b wird auch b ausgewertet, gleich welcher Wert a hat. Das ist zu beachten, wenn die Operanden a bzw. b sog. Nebeneffekte aufweisen. Entsprechendes gilt für die Operatoren || und |.
Wir werden in der nächsten Unterrichtsstunde ein  Beispiel für die Unterschiede bei der Kurz- und Langauswertung bei Booleschen Ausdrücken kennen lernen.
 

Java-Programm Beispiel

Downloads:
Wittgenstein1.java
Wittgenstein2.java
import info1.*;
public class Wittgenstein1{
  public static void main(String args[]){
    System.out.print("Geben Sie den Wert fuer a an(1 fuer true, 0 fuer false): ");
    boolean a = 1==Console.in.readInt();
    System.out.print("Geben Sie den Wert fuer b an(1 fuer true, 0 fuer false): ");
    boolean b = 1==Console.in.readInt();
    boolean c = a&&b;
    System.out.println(c);
  }
}
public class Wittgenstein2{
  public static void main(String args[]){
    boolean a;
    boolean b;
    a=false; b= false;
    System.out.println(a&&b);
    a=true; b= false;
    System.out.println(a&&b);
    a=false; b= true;
    System.out.println(a&&b);
    a=true; b= true;
    System.out.println(a&&b);
  }
}
 

 

 

Das zweite Programm ist geeignet, die Wahrheitstabellen, wie sie Wittgenstein im Tractatus aufgezählt hat, zu modellieren. Man ersetze in den Anweisungen die booleschen Ausdrücke um andere Tabellen zu erzeugen.

Wir haben gesehen, dass sich das ausschließliche oder (XOR) reduzieren lässt. Wir haben gezeigt:
a XOR b = (ØaÙb)Ú(aÙØb)
Somit haben wir auch die Möglichkeit, XOR in Java zu implementieren:

 

 
import info1.*;
public class XOR{
   public static void main(String[] args){
      System.out.print("Geben Sie den booleschen Wert
                       von a an 1/0: ");
      boolean a = Console.in.readInt()==1;
      System.out.print("Geben Sie den booleschen Wert
                       von b an 1/0: ");
      boolean b = Console.in.readInt()==1;
      boolean aXORb = ((!a&&b)||(a&&!b));		//1
      //wie Punkt vor Strich gilt: ! vor && vor ||
      System.out.println(a+ " " + b + " " + aXORb);
   }
}
 

Mit diesem Programm kann man die zu  ((!a&&b)||(a&&!b)) gehörige Wertetabelle erzeugen. Man muss dazu das Programm lediglich viermal mit den Werten 0-0, 1-0, 0-1 und 1-1laufen lassen

false false false
false true true
true false true
true true false

Leicht erkennt man die XOR-Tabelle.

Java kennt einen XOR-Operator: '^', so dass die Zeile //1 im letzten Programm ersetzt werden kann durch:

boolean aXORb = a^2;

Es sei aber bereits hier vermerkt, dass eine Hardwarelösung von logischen Operatoren häufig verlangt, dass man sie auf Kombinationen andrer logischer Operationen zurcükführt.
 

zu 10.4 Übungen
zur Startseite www.pohlig.de  (C) MPohlig 2005