Operator: Unterschied zwischen den Versionen
Aus EINI
Marius (Diskussion | Beiträge) (→Priotitäten von Operatoren) |
|||
(18 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Ein Operator kann auf Werte angewendet werden, um diese zu kombinieren oder manipulieren. So ist z.B. '''+''' ein zweistelliger Operator und addiert zwei numerische Werte miteinander oder konkateniert einen String an einen anderen. | + | Ein '''Operator''' kann auf Werte angewendet werden, um diese zu kombinieren oder manipulieren. So ist z.B. '''+''' ein zweistelliger '''Operator''' und addiert zwei numerische Werte miteinander oder konkateniert einen [[String]] an einen anderen. |
+ | |||
+ | '''Vergleiche''' bestehen immer aus zwei Operanden und einem Operator dazwischen. | ||
+ | |||
+ | [[Datei:compare.png]] | ||
= Erlaubte Operatoren = | = Erlaubte Operatoren = | ||
− | Auf | + | Auf jeden [[Primitiver Datentyp|primitiven Datentyp]] sind in [[Java]] unterschiedliche '''Operatoren''' erlaubt. |
{| class = "wikitable" width=100% | {| class = "wikitable" width=100% | ||
! Datentyp !! Operator !! Funktion | ! Datentyp !! Operator !! Funktion | ||
|- | |- | ||
− | | rowspan=" | + | | rowspan="4" | [[boolean]] |
| && | | && | ||
− | | UND-Verknüpfung zwischen linkem und rechtem | + | | UND-Verknüpfung zwischen linkem und rechtem Operanden |
|- | |- | ||
| || | | || | ||
− | | ODER-Verknüpfung zwischen linkem und rechtem Operand | + | | ODER-Verknüpfung zwischen linkem und rechtem Operanden |
− | | | + | |- |
+ | | == | ||
+ | | Vergleich auf Gleichheit mit einem anderen '''boolean''' | ||
+ | |- | ||
+ | | ! | ||
+ | | Negation des Operanden rechts vom ! | ||
+ | |- | ||
+ | | rowspan="13" | [[byte]], [[char]], [[short]], [[Integer|int]], [[long]] | ||
+ | | + | ||
+ | | Addition von linkem mit rechtem Operanden | ||
+ | |- | ||
+ | | - | ||
+ | | Subtraktion von linkem mit rechtem Operand | ||
+ | |- | ||
+ | | * | ||
+ | | Multiplikation von linkem mit rechtem Operanden | ||
+ | |- | ||
+ | | / | ||
+ | | Division von linkem mit rechtem Operanden | ||
+ | |- | ||
+ | | % | ||
+ | | Modulo Operation (Division mit Rest) von linkem mit rechtem Operanden | ||
+ | |- | ||
+ | | ++ | ||
+ | | Inkrement der Variablen links vom Operator um 1 | ||
+ | |- | ||
+ | | -- | ||
+ | | Dekrement der Variablen links vom Operator um 1 | ||
+ | |- | ||
+ | | == | ||
+ | | Vergleich des linken und rechten Operanden miteinander auf Gleichheit | ||
+ | |- | ||
+ | | != | ||
+ | | Vergleich des linken und rechten Operanden miteinander auf Ungleichheit | ||
+ | |- | ||
+ | | < | ||
+ | | Vergleich ob der linke Operand kleiner ist als der rechte Operand | ||
+ | |- | ||
+ | | > | ||
+ | | Vergleich ob der linke Operand größer ist als der rechte Operand | ||
+ | |- | ||
+ | | <= | ||
+ | | Vergleich ob der linke Operand kleiner oder gleich dem rechten Operanden ist | ||
+ | |- | ||
+ | | >= | ||
+ | | Vergleich ob der linke Operand größer oder gleich dem rechten Operanden ist | ||
+ | |- | ||
|} | |} | ||
+ | = Beispiele = | ||
+ | |||
+ | |||
+ | '''Beispiel 1''' | ||
+ | <source lang="java"> | ||
+ | int a = 5; | ||
+ | int b = 7; | ||
+ | boolean c = a<2; | ||
+ | boolean d = a+b>4 && a==5; | ||
+ | boolean e = a-b>4 && a==5; | ||
+ | System.out.println("c: "+c+"d: "+d + "e: "+e); | ||
+ | </source> | ||
+ | |||
+ | Ausgabe | ||
+ | c: false d: true e: false | ||
+ | |||
+ | '''Beispiel 2''' | ||
+ | <source lang="java" > | ||
+ | int a = 7; | ||
+ | boolean c = (a>2 && (a-3)!=4)||(a==9 || a>=5); | ||
+ | boolean d = a+b>4 && a==5; | ||
+ | System.out.println("c: "+c + "d: "+d); | ||
+ | </source> | ||
+ | |||
+ | Ausgabe | ||
+ | c: true d: true | ||
+ | '''Beispiel 3''' | ||
+ | <source lang="java" > | ||
+ | boolean c; | ||
+ | boolean d; | ||
+ | short a = 50; | ||
+ | short b = a + 40; | ||
+ | System.out.ptintln("a: "+ a + "b: " +b); | ||
+ | |||
+ | a++; | ||
+ | b = b/3; | ||
+ | System.out.ptintln("a: "+ a + "b: " +b); | ||
+ | |||
+ | c = (a%2==0); | ||
+ | d = (b%2==0); | ||
+ | |||
+ | System.out.println("a is an even number: "+c + ", b is an even number: "+d); | ||
+ | </source> | ||
+ | |||
+ | Ausgabe | ||
+ | a: 50 b: 90 | ||
+ | a: 51 b: 30 | ||
+ | a is an even number: false, b is an even number: true | ||
+ | |||
+ | =Prioritäten= | ||
− | + | Die '''Prioritäten''' von Operatoren bestimmen, in welcher '''Reihenfolge''' sie ausgeführt werden. Je kleiner der Rang, desto höher die Priorität der Ausführung. Die Auswertung von geklammerten Ausdrücken hat dabei, wie bei mathematischen Formeln, die höchste Priorität. | |
{| class="wikitable" | {| class="wikitable" |
Aktuelle Version vom 2. März 2017, 15:36 Uhr
Ein Operator kann auf Werte angewendet werden, um diese zu kombinieren oder manipulieren. So ist z.B. + ein zweistelliger Operator und addiert zwei numerische Werte miteinander oder konkateniert einen String an einen anderen.
Vergleiche bestehen immer aus zwei Operanden und einem Operator dazwischen.
Erlaubte Operatoren
Auf jeden primitiven Datentyp sind in Java unterschiedliche Operatoren erlaubt.
Datentyp | Operator | Funktion |
---|---|---|
boolean | && | UND-Verknüpfung zwischen linkem und rechtem Operanden |
|| | ODER-Verknüpfung zwischen linkem und rechtem Operanden | |
== | Vergleich auf Gleichheit mit einem anderen boolean | |
! | Negation des Operanden rechts vom ! | |
byte, char, short, int, long | + | Addition von linkem mit rechtem Operanden |
- | Subtraktion von linkem mit rechtem Operand | |
* | Multiplikation von linkem mit rechtem Operanden | |
/ | Division von linkem mit rechtem Operanden | |
% | Modulo Operation (Division mit Rest) von linkem mit rechtem Operanden | |
++ | Inkrement der Variablen links vom Operator um 1 | |
-- | Dekrement der Variablen links vom Operator um 1 | |
== | Vergleich des linken und rechten Operanden miteinander auf Gleichheit | |
!= | Vergleich des linken und rechten Operanden miteinander auf Ungleichheit | |
< | Vergleich ob der linke Operand kleiner ist als der rechte Operand | |
> | Vergleich ob der linke Operand größer ist als der rechte Operand | |
<= | Vergleich ob der linke Operand kleiner oder gleich dem rechten Operanden ist | |
>= | Vergleich ob der linke Operand größer oder gleich dem rechten Operanden ist |
Beispiele
Beispiel 1
int a = 5; int b = 7; boolean c = a<2; boolean d = a+b>4 && a==5; boolean e = a-b>4 && a==5; System.out.println("c: "+c+"d: "+d + "e: "+e);
Ausgabe
c: false d: true e: false
Beispiel 2
int a = 7; boolean c = (a>2 && (a-3)!=4)||(a==9 || a>=5); boolean d = a+b>4 && a==5; System.out.println("c: "+c + "d: "+d);
Ausgabe
c: true d: true
Beispiel 3
boolean c; boolean d; short a = 50; short b = a + 40; System.out.ptintln("a: "+ a + "b: " +b); a++; b = b/3; System.out.ptintln("a: "+ a + "b: " +b); c = (a%2==0); d = (b%2==0); System.out.println("a is an even number: "+c + ", b is an even number: "+d);
Ausgabe
a: 50 b: 90 a: 51 b: 30 a is an even number: false, b is an even number: true
Prioritäten
Die Prioritäten von Operatoren bestimmen, in welcher Reihenfolge sie ausgeführt werden. Je kleiner der Rang, desto höher die Priorität der Ausführung. Die Auswertung von geklammerten Ausdrücken hat dabei, wie bei mathematischen Formeln, die höchste Priorität.
Operator | Rang | Typ | Beschreibung |
---|---|---|---|
++, -- | 1 | arithmetisch | Inkrement und Dekrement |
+, - | 1 | arithmetisch | unäres Plus |
! | 1 | [ boolean] | logisches Komplement |
(Typ) | 1 | jeder | Cast |
*, /, % | 2 | arithmetisch | multiplikative Operationen ("Punktrechnung") |
+, - | 3 | arithmetisch | additive Operationen ("Strichrechnung") |
+ | 3 | String | String-Konkatenation |
<, <=, >, >= | 5 | arithmetisch | numerische Vergleiche |
==, != | 6 | primitiv | Gleichheit/Ungleichheit von Werten |
& | 7 | [ boolean] | logisches Und |
^ | 8 | [ boolean] | logisches exklusives Oder |
| | 9 | [ boolean] | logisches Oder |
&& | 10 | [ boolean] | logisches konditionales Und |
|| | 11 | [ boolean] | logisches konditionales Oder |
= | 13 | jeder | Zuweisung |
+=, -=, *=, /= | 14 | jeder | Zuweisung mit Operation |