Java-Operatoren
Eine der grundlegendsten Anwendungen von Computern ist die Durchführung mathematischer Operationen. Als Computersprache bietet Java auch einen reichhaltigen Satz von Operatoren zur Manipulation von Variablen. Wir können Operatoren in die folgenden Gruppen einteilen:
- Arithmetische Operatoren
- Relationale Operatoren
- Bitweise Operatoren
- Logische Operatoren
- Zuweisungsoperatoren
- Weitere Operatoren
Arithmetische Operatoren
Arithmetische Operatoren werden in mathematischen Ausdrücken verwendet, und ihre Funktion ist dieselbe wie in der Mathematik. Die folgende Tabelle listet alle arithmetischen Operatoren auf.
In den Beispielen in der Tabelle wird angenommen, dass die ganzzahlige Variable A den Wert 10 und die Variable B den Wert 20 hat:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| + | Addition - addiert Werte auf beiden Seiten des Operators | A + B ergibt 30 |
| - | Subtraktion - subtrahiert den rechten Operanden vom linken Operanden | A - B ergibt -10 |
| * | Multiplikation - multipliziert Werte auf beiden Seiten des Operators | A * B ergibt 200 |
| / | Division - dividiert den linken Operanden durch den rechten Operanden | B / A ergibt 2 |
| % | Rest - der Rest der Division des linken Operanden durch den rechten Operanden | B%A ergibt 0 |
| ++ | Inkrement: erhöht den Wert des Operanden um 1 | B++ oder ++B ergibt 21 (siehe unten für den Unterschied) |
| -- | Dekrement: verringert den Wert des Operanden um 1 | B-- oder --B ergibt 19 (siehe unten für den Unterschied) |
Beispiel
Das einfache Beispielprogramm unten demonstriert die arithmetischen Operatoren. Kopieren Sie das folgende Java-Programm und fügen Sie es ein, speichern Sie es als Datei Test.java, und kompilieren und führen Sie dieses Programm dann aus:
Beispiel
Beispiel ausführen »
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 a-- = 11 d++ = 25 ++d = 27
Inkrement- und Dekrement-Operatoren
1. Inkrement- (++)- und Dekrement- (--)-OperatorenSie sind spezielle arithmetische Operatoren. Während arithmetische Operatoren zwei Operanden benötigen, um eine Operation auszuführen, wirken die Inkrement- und Dekrement-Operatoren auf einen Operanden.
Beispiel
Das Ergebnis ist:
进行自增运算后的值等于4 进行自减运算后的值等于2
Erklärung:
int b = ++a; Der Operationsprozess wird wie folgt aufgeschlüsselt: a=a+1=4; b=a=4; das Endergebnis ist b=4, a=4
int d = --c; Der Operationsprozess wird wie folgt aufgeschlüsselt: c=c-1=2; d=c=2; das Endergebnis ist d=2, c=2
2. Präfix-Inkrement und -Dekrement (++a, --a):Führen Sie zuerst die Inkrement- oder Dekrementoperation aus und werten Sie dann den Ausdruck aus.
3. Postfix-Inkrement und -Dekrement (a++, a--):Werten Sie zuerst den Ausdruck aus und führen Sie dann die Inkrement- oder Dekrementoperation aus. Beispiel:
Beispiel
Das Ergebnis ist:
自增运算符前缀运算后a=6,x=12 自增运算符后缀运算后b=6,y=10
Relationale Operatoren
Die folgende Tabelle listet die von Java unterstützten relationalen Operatoren auf.
In den Beispielen in der Tabelle hat die ganzzahlige Variable A den Wert 10 und die Variable B den Wert 20:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| == | Prüft, ob die Werte zweier Operanden gleich sind; wenn sie gleich sind, ist die Bedingung wahr. | (A == B) ist falsch. |
| != | Prüft, ob die Werte zweier Operanden gleich sind; wenn die Werte nicht gleich sind, ist die Bedingung wahr. | (A != B) ist wahr. |
| > | Prüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A > B) ist falsch. |
| < | Prüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A < B) ist wahr. |
| >= | Prüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A >= B) ist falsch. |
| <= | Prüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist; wenn ja, ist die Bedingung wahr. | (A <= B) ist wahr. |
Beispiel
Das folgende einfache Beispielprogramm demonstriert relationale Operatoren. Kopieren Sie das folgende Java-Programm und fügen Sie es ein, speichern Sie es als Datei Test.java, und kompilieren und führen Sie dieses Programm dann aus:
Code der Datei Test.java:
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
Bitweise Operatoren
Java definiert bitweise Operatoren, die auf den Integer-Typ (int), den Long-Typ (long), den Short-Typ (short), den Zeichentyp (char) und den Byte-Typ (byte) usw. angewendet werden.
Bitweise Operatoren wirken auf alle Bits und führen Operationen Bit für Bit aus. Angenommen a = 60, b = 13; ihre binäre Darstellung sieht wie folgt aus:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
Die folgende Tabelle listet die grundlegenden Operationen der bitweisen Operatoren auf, wobei die Ganzzahlvariable A den Wert 60 und die Variable B den Wert 13 hat:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| & | Wenn die entsprechenden Bits beide 1 sind, ist das Ergebnis 1; andernfalls ist es 0. | (A & B) ergibt 12, d. h. 0000 1100 |
| | | Wenn die entsprechenden Bits beide 0 sind, ist das Ergebnis 0; andernfalls ist es 1. | (A | B) ergibt 61, d. h. 0011 1101 |
| ^ | Wenn die Werte der entsprechenden Bits gleich sind, ist das Ergebnis 0; andernfalls ist es 1. | (A ^ B) ergibt 49, d. h. 0011 0001 |
| 〜 | Der bitweise Komplementoperator invertiert jedes Bit des Operanden, das heißt, 0 wird zu 1 und 1 wird zu 0. | (~A) ergibt -61, d. h. 1100 0011 |
| << | Bitweiser Linksverschiebungsoperator. Der linke Operand wird um die Anzahl von Bits nach links verschoben, die durch den rechten Operanden angegeben wird. | A << 2 ergibt 240, d. h. 1111 0000 |
| >> | Bitweiser Rechtsverschiebungsoperator. Der linke Operand wird um die Anzahl der durch den rechten Operanden angegebenen Bits nach rechts verschoben. | A >> 2 ergibt 15, d. h. 1111 |
| >>> | Bitweiser Rechtsverschiebungsoperator mit Nullauffüllung. Der Wert des linken Operanden wird um die Anzahl der durch den rechten Operanden angegebenen Bits nach rechts verschoben, und die freigewordenen Bits werden mit Nullen aufgefüllt. | A >>> 2 ergibt 15, d. h. 0000 1111 |
Beispiel
Das folgende einfache Beispielprogramm demonstriert bitweise Operatoren. Kopieren Sie das folgende Java-Programm und fügen Sie es ein, speichern Sie es als Datei Test.java, und kompilieren und führen Sie dieses Programm dann aus:
Code der Datei Test.java:
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
Logische Operatoren
Die folgende Tabelle listet die grundlegenden Operationen der logischen Operatoren auf, wobei angenommen wird, dass die boolesche Variable A wahr und die Variable B falsch ist.
| Operator | Beschreibung | Beispiel |
|---|---|---|
| && | Wird als logischer UND-Operator bezeichnet. Die Bedingung ist genau dann wahr, wenn beide Operanden wahr sind. | (A && B) ist falsch. |
| | | | Wird als logischer ODER-Operator bezeichnet. Wenn einer der beiden Operanden wahr ist, ist die Bedingung wahr. | (A || B) ist wahr. |
| ! | Wird als logischer NICHT-Operator bezeichnet. Er wird verwendet, um den logischen Zustand des Operanden umzukehren. Wenn eine Bedingung wahr ist, erzeugt der logische NICHT-Operator falsch. | !(A && B) ist wahr. |
Beispiel
Das folgende einfache Beispielprogramm demonstriert logische Operatoren. Kopieren Sie das folgende Java-Programm und fügen Sie es ein, speichern Sie es als Datei Test.java, und kompilieren und führen Sie dieses Programm dann aus:
Beispiel
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
a && b = false a || b = true !(a && b) = true
Logische Kurzschlussoperatoren
Bei Verwendung des logischen UND-Operators ist das Ergebnis nur dann wahr, wenn beide Operanden wahr sind; ist jedoch der erste Operand falsch, ist das Ergebnis notwendigerweise falsch, und der zweite Operand wird nicht mehr ausgewertet.
Beispiel
Die Ausgabe ist:
使用短路逻辑运算符的结果为false a的结果为5
Analyse:Dieses Programm verwendet den logischen Kurzschlussoperator (&&). Zuerst wird das Ergebnis von a<4 als falsch bestimmt, daher ist das Ergebnis von b notwendigerweise falsch; deshalb wird die zweite Operation a++<10 nicht ausgeführt, sodass der Wert von a 5 ist.
Zuweisungsoperatoren
Die folgenden Zuweisungsoperatoren werden von der Java-Sprache unterstützt:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| = | Einfacher Zuweisungsoperator: weist den Wert des rechten Operanden dem linken Operanden zu. | C = A + B weist C den Wert von A + B zu. |
| + = | Additions- und Zuweisungsoperator: Er addiert den linken und rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C += A ist äquivalent zu C = C + A |
| - = | Subtraktions- und Zuweisungsoperator: Er subtrahiert den rechten Operanden vom linken Operanden und weist das Ergebnis dem linken Operanden zu. | C -= A ist äquivalent zu C = C - A |
| * = | Multiplikations- und Zuweisungsoperator: Er multipliziert den linken und rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C *= A ist äquivalent zu C = C * A |
| / = | Divisions- und Zuweisungsoperator: Er dividiert den linken Operanden durch den rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C /= A ist, wenn C und A vom selben Typ sind, äquivalent zu C = C / A |
| (%)= | Modulus- und Zuweisungsoperator: Er bildet den Modulus des linken und rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C %= A ist äquivalent zu C = C % A |
| << = | Zuweisungsoperator für Linksverschiebung | C <<= 2 ist äquivalent zu C = C << 2 |
| >> = | Zuweisungsoperator für Rechtsverschiebung | C >>= 2 ist äquivalent zu C = C >> 2 |
| &= | Bitweiser UND-Zuweisungsoperator | C &= 2 ist äquivalent zu C = C & 2 |
| ^ = | Bitweiser XOR-Zuweisungsoperator | C ^= 2 ist äquivalent zu C = C ^ 2 |
| | = | Bitweiser OR-Zuweisungsoperator | C |= 2 ist äquivalent zu C = C | 2 |
Beispiel
Das folgende einfache Beispielprogramm demonstriert Zuweisungsoperatoren. Kopieren und fügen Sie das folgende Java-Programm ein, speichern Sie es als Test.java-Datei, kompilieren und führen Sie dann dieses Programm aus:
Code der Datei Test.java:
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
c = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c <<= 2 = 20 c >>= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10
Bedingter Operator (?:)
Der bedingte Operator wird auch ternärer Operator genannt. Dieser Operator hat 3 Operanden und muss einen booleschen Ausdruck auswerten. Der Hauptzweck dieses Operators besteht darin, zu entscheiden, welcher Wert einer Variablen zugewiesen werden soll.
variable x = (expression) ? value if true : value if false
Beispiel
Code der Datei Test.java:
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
Value of b is : 30 Value of b is : 20
instanceof-Operator
Dieser Operator wird verwendet, um mit Objektinstanzen zu arbeiten und zu prüfen, ob das Objekt einen bestimmten Typ (Klassentyp oder Schnittstellentyp) hat.
Das Verwendungsformat des instanceof-Operators ist wie folgt:
( Object reference variable ) instanceof (class/interface type)
Wenn das Objekt, auf das die Variable auf der linken Seite des Operators verweist, ein Objekt der Klasse oder Schnittstelle auf der rechten Seite des Operators ist, ist das Ergebnis true.
Hier ist ein Beispiel:
String name = "James"; boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
Wenn das verglichene Objekt mit dem Typ auf der rechten Seite kompatibel ist, gibt dieser Operator weiterhin true zurück.
Betrachten Sie das folgende Beispiel:
Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:
true
Java-Operatorrangfolge
Wenn mehrere Operatoren in einem Ausdruck vorkommen, welcher kommt zuerst? Dies betrifft die Frage der Operatorrangfolge. In einem Ausdruck mit mehreren Operatoren kann eine unterschiedliche Operatorrangfolge zu stark unterschiedlichen Endergebnissen führen.
Zum Beispiel: (1+3) + (3+2)*2. Wenn die Addition zuerst mit der höchsten Rangfolge berechnet wird, ist das Ergebnis 18; wenn die Multiplikation zuerst berechnet wird, ist das Ergebnis 14.
Ein weiteres Beispiel: x = 7 + 3 * 2; hier erhält x 13, nicht 20, weil der Multiplikationsoperator eine höhere Rangfolge als der Additionsoperator hat, also wird 3 * 2 zuerst berechnet, um 6 zu erhalten, und dann wird 7 addiert.
In der folgenden Tabelle stehen Operatoren mit der höchsten Rangfolge oben und die mit der niedrigsten Rangfolge unten.
| Kategorie | Operator | Assoziativität |
|---|---|---|
| Postfix | () [] . (Punktoperator) | Von links nach rechts |
| Unär | expr++ expr-- | Von links nach rechts |
| Unär | ++expr --expr + - ~ ! | Von rechts nach links |
| Multiplikativ | * /% | Von links nach rechts |
| Additiv | + - | Von links nach rechts |
| Verschiebung | >> >>> << | Von links nach rechts |
| Relational | > >= < <= | Von links nach rechts |
| Gleichheit | == != | Von links nach rechts |
| Bitweises AND | & | Von links nach rechts |
| Bitweises XOR | ^ | Von links nach rechts |
| Bitweises OR | | | Von links nach rechts |
| Logisches AND | && | Von links nach rechts |
| Logisches OR | | | | Von links nach rechts |
| Conditional | ?: | Von rechts nach links |
| Zuweisung | = + = - = * = / =%= >> = << =&= ^ = | = | Von rechts nach links |
| Komma | , | Von links nach rechts |