Literatur

Relationale, logische und bitweise Operatoren

Sehr häufig werden beim Programmieren auch die relationalen und logischen Operatoren verwendet. Sie werden in Kontrollstrukturen (z.B. if-Anweisung) eingesetzt, damit bestimmte Programmbereiche durchlaufen werden.

Relationale Operatoren

Relationale Operatoren vergleichen  zwei Werte miteinander. Das Ergebnis ist immer ein boolescher Wert, also true oder false. Zu den relationalen Operatoren zählen:

Operator Beschreibung
Übersicht relationale Operatoren
== Das doppelte Gleichheitszeichen überprüft zwei Werte auf ihre Gleichheit, kann jedoch nicht bei Zeichenketten eingesetzt werden.
!= Das Gleichheitszeichen mit vorgestelltem Ausrufezeichen bedeutet "ungleich". Es überprüft zwei Werte auf Ihre Ungleichheit.
> Das "Größer"-Zeichen überprüft, ob ein Wert größer ist als der andere.
< Das "Kleiner"-Zeichen überprüft, ob ein Wert kleiner ist als der andere.
>=  Das Größer/Gleich-Zeichen überprüft, ob ein Wert größer oder gleich dem anderen ist.
<= Das Kleiner/Gleich-Zeichen überprüft, ob ein Wert kleiner oder gleich dem anderen ist.

Für alle Beispiele gehen wir von a=5 und b=3 aus.
Hier sollten Sie zunächst selber nachdenken. Anschließend können Sie durch Betätigen der jeweiligen Schaltfläche die Lösung abrufen. Das Ergebnis der relationalen Operationen wird in der booleschen Variablen c gespeichert. Da c nur die Werte true oder false annehmen kann, ist dies der richtige Datentyp, um das Ergebnis einer relationalen oder logischen Operation zugewiesen zu bekommen.

Beispiele:

byte a=5;
byte b=3;
boolean c;

 

c = a==b; 

c =  a!=b;

c =  a>b;

c =  a<b;

c = a>=b; 

c = a<=b; 



Wir empfehlen Ihnen, eine Java Startklasse zu erstellen und ein wenig mit den Werten von a und b mit den obigen Operatoren zu experimentieren. Damit Sie sich Ihre Ergebnisse anzeigen lassen können, fügen Sie einfach folgende Zeile hinter jede Operation:

System.out.println(c);


Logische Operatoren

Die logischen Operatoren dienen dazu boolesche Ausdrücke auszuwerten. Es gibt die folgenden logischen Operatoren:

Operator Beschreibung
Übersicht logische Operatoren
&& Doppeltes UND ist eine logische UND-Verknüpfung, bei der wir nur ein wahres Ergebnis erhalten, wenn beide Werte wahr sind. Ist an dieser Stelle bereits der erste Operator falsch (false) so wird der zweite Operand nicht mehr ausgewertet, da false und irgendwas bei einer logischen UND-Verknüpfung als Resultat immer false hat.
& Einfaches UND ist eine logische UND-Verknüpfung. Bei dieser logischen UND-Verknüpfung werden beide Operanden ausgewertet.
|| Doppeltes ODER ist eine logische ODER-Verknüpfung, bei der wir nur ein falsches Ergebnis erhalten, wenn beide Werte falsch sind. Ist an dieser Stelle bereits der erste Operator wahr (true) so wird der zweite Operand nicht mehr ausgewertet, da true und irgendwas bei einer logischen ODER-Verknüpfung als Resultat immer truehat.
| Einfaches ODER ist eine logische ODER-Verknüpfung. Bei dieser logischen ODER-Verknüpfung werden beide Operanden ausgewertet.
! Das Ausrufezeichen ist der Negierungsoperator in der booleschen Logik. Aus wahr (true) wird falsch (false) und umgekehrt.
^ Das "Dach" wird als Exklusiv-Oder bezeichnet. Entweder der erste oder der zweite Ausdruck muss wahr sein. Es dürfen aber nicht beide Ausdrücke gleich sein, damit das Ergebnis wahr wird.


Die nachfolgenden Tabellen zeigen einen direkten Überblick über die boolesche Logik und deren Operatoren. Dabei steht 0 für den booleschen Wert false und 1 für den Wert true.

Logische UND-Verknüpfung
A B A && B
0 0 0
0 1 0
1 0 0
1 1 1
Logische ODER-Verknüpfung
A B A || B
0 0 0
0 1 1
1 0 1
1 1 1

 

Logische NOT-Verknüpfung (Verneinung)
A ! A
0 1
1 0

A B A ^ B
Logische Exklusiv-Oder-Verknüpfung (Entweder-Oder)
0 0 0
0 1 1
1 0 1
1 1 0



Für alle Beispiele setzen wir a=true und b=false.
Hier sollten Sie erst überlegen. Anschließend können Sie durch Betätigen der jeweiligen Schaltfläche die Lösung abrufen. Das Ergebnis der booleschen Operationen wird in der booleschen Variablen c gespeichert. Da c nur die Werte true oder false annehmen kann, ist dies der richtige Datentyp, um das Ergebnis einer booleschen Operation zugewiesen zu bekommen.

Beispiele:

boolean  a=true;
boolean  b=false;
boolean c;

 

 

c = a&&b;

c =  a||b;

c =  !a;



Wir empfehlen Ihnen, eine Java-Startklasse zu erstellen und ein wenig mit den Werten von a und b mit den obigen Operatoren zu experimentieren. Damit Sie sich Ihre Ergebnisse anzeigen lassen können, fügen Sie einfach folgende Zeile hinter jede Operation:

System.out.println(c);

 

Bitweise Operatoren

Weitere Operatoren sind die Bit-Operatoren. Einige haben Sie schon kennengelernt bei den Zuweisungsoperatoren. Wir wollen hier aber noch einmal direkt auf einige Bit-Operatoren eingehen.

Zu den weiteren bitweisen Operatoren gehören:

Operator Beschreibung
Übersicht bitweise Operatoren
&

Einfaches UND ist eine logische UND-Verknüpfung, bei der wir nur ein wahres Ergebnis erhalten, wenn beide Werte wahr sind. Hierbei sind selbstverständlicherweise die Operanden auf der Bit-Ebene zu betrachten.

Kurz-Beispiele:

Dezimal-Darstellung: 1 & 2 = 0; 1 & 3 = 1; 2 & 3 = 2; 1 & 4 = 0

Dazugehörige Bit-Darstellung: 0001 & 0010 = 0000; 0001 & 0011 = 0001; 0010 & 0011 = 0010 ; 0001 & 0100 = 0000

|

Einfaches Oder ist eine logische ODER-Verknüpfung auf Bit-Ebene.

Kurz-Beispiele:

Dezimal-Darstellung: 1 | 2 = 3; 1 | 3 = 3; 2 | 3 = 3; 1 | 4 = 5

Dazugehörige Bit-Darstellung: 0001 | 0010 = 0011; 0001 | 0011 = 0011; 0010 | 0011 = 0011 ; 0001 & 0100 = 0101

^ Das Dach ist das EXKLUSIV-ODER, d.h. beide Werte müssen unterschiedlich sein, damit das Bit in eine 1 umgewandelt wird.
~ Die Tilde negiert alle Bits, d.h. aus einer 0 wird eine 1 und umgekehrt.
>> Der Rechts-Schiebe-Operator verschiebt den ersten Wert um die Anzahl an Bits des zweiten Wertes nach rechts, hierbei wird das Vorzeichen berücksichtigt.
>>> Der erweiterte Rechts-Schiebe-Operator verschiebt den ersten Wert um die Anzahl an Bits des zweiten Wertes nach rechts, hierbei wird das Vorzeichen allerdings NICHT berücksichtigt.
<< Der Links-Schiebe-Operator verschiebt den ersten Wert um die Anzahl an Bits des zweiten Wertes nach links.

 

Bei den Beispielen zu den booleschen Bit-Operatoren setzen wir a=5 und b=3

byte a=5;  // In Bit - Darstellung 00000101 (8 Bit ergeben 1 byte)
byte b=3; // In Bit - Darstellung 00000011 (8 Bit ergeben 1 byte)
int c;

 

c = a&b;

c =  a|b;



Auch hier empfehlen wir ihnen eine Java Startklasse zu erstellen und ein wenig mit den Werten von a und b mit den obigen Operatoren zu experimentieren. Damit Sie Ihre Ergebnisse sich anzeigen lassen können, fügen Sie einfach folgende Zeile hinter jede Operation:

System.out.println(c);

 

Bei den weiteren Beispielen setzen wir a=17 und b=2

byte a=17;  /* In Bit-Darstellung 00010001 (8 Bit ergeben 1 byte) */
byte b=2;   /*In Bit-Darstellung 00000010 (8 Bit ergeben 1 byte) */
int c;

 

c = a^b;

c = ~a;

c = a>>b;

c =  a>>>b;

c =  a<< b ;



Auch hier empfehlen wir Ihnen, eine Java-Startklasse zu erstellen und ein wenig mit den Werten von a und b mit den obigen Operatoren zu experimentieren. Damit Sie sich Ihre Ergebnisse anzeigen lassen können, fügen Sie einfach folgende Zeile hinter jede Operation:

System.out.println(c);


Zuletzt ist noch der bedingte Operator zu nennen, der umgangssprachlich auch als WENN-DANN-Operator bezeichnet wird. Dieser sieht wie folgt aus

Operator Bschreibung
Übersicht bedingter Operator
A?B:C Bedeutet: WENN A wahr (true) ist, DANN gib B zurück, ansonsten C



Beispiel:

boolean a=true;  
byte b=2;
byte c=3;
byte d;

 

d= a?b:c;



Auch hier empfehlen wir Ihnen, eine Java-Startklasse zu erstellen und ein wenig mit den Werten von a und b mit den obigen Operatoren zu experimentieren. Damit Sie sich Ihre Ergebnisse anzeigen lassen können, fügen Sie einfach folgende Zeile hinter jede Operation:

System.out.println(d);