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 |