English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
算术运算符
Relationale Operatoren
Bit-Operationen
Logikoperator
Zuweisungsoperator
其他运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的示例假设整数变量A的值为10, der Wert der Variablen B ist20:
Operator | Beschreibung | Beispiel |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21(区别详见下文) |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19(区别详见下文) |
下面的简单示例程序演示了算术运算符。复制并粘贴下面的 Java 程序并保存为 ArithmeticOperator.java 文件,然后编译并运行这个程序:
class ArithmeticOperator { public static void main(String[] args) { double number1 = 12.5, number2 = 3.5, result; //使用加法运算符 result = number1 + Zahl2; System.out.println("number1 + Zahl2 = \ + result); //使用减法运算符 result = number1 - Zahl2; System.out.println("number1 - Zahl2 = \ + result); //使用乘法运算符 result = number1 * Zahl2; System.out.println("number1 * Zahl2 = \ + result); //使用除法运算符 result = number1 / Zahl2; System.out.println("number1 / Zahl2 = \ + result); // 使用余数运算符 result = number1 % number2; System.out.println("number1 % number2 = \ + result); } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
Zahl1 + Zahl2 = 16.0 Zahl1 - Zahl2 = 9.0 Zahl1 * Zahl2 = 43.75 Zahl1 / Zahl2 = 3.5714285714285716 Zahl1 % number2 = 2.0
1, inkrementierend (++) dekrementierend (--) Operatorist ein spezieller arithmetischer Operator, bei dem zwei Operanden für die Operation erforderlich sind, während der inkrementierende-dekrementierende Operator nur einen Operanden erfordert.
public class selfAddMinus{ public static void main(String[] args){ int a = 3;//Eine Variable definieren; int b = ++a;//inkrementierende Operation int c = 3; int d = --c;//dekrementierende Operation System.out.println("Der Wert nach der inkrementierenden Operation ist gleich")+b); System.out.println("Der Wert nach der dekrementierenden Operation ist gleich")+d); } }
Laufende Ergebnisse:
Der Wert nach der inkrementierenden Operation ist gleich4 Der Wert nach der dekrementierenden Operation ist gleich2
Erklärung:
int b = ++a; Der Prozess der Aufteilung der Operation ist: a=a+1=4; b=a=4, das Endresultat ist b=4,a=4
int d = --c; Der Prozess der Aufteilung der Operation ist: c=c-1=2; d=c=2, das Endresultat ist d=2,c=2
2、prefix inkrementierend-dekrementierend (++a,--a): Führen Sie zuerst die inkrementierenden oder dekrementierenden Operationen durch und führen Sie dann die Ausdrucksoperation durch.
3、postfix inkrementierend-dekrementierend (a++,a--) Führen Sie zuerst die Ausdrucksoperation durch und führen Sie dann die inkrementierenden oder dekrementierenden Operationen durch Beispiel:
public class selfAddMinus{ public static void main(String[] args){ int a = 5;//Eine Variable definieren; int b = 5; int x = 2*++a; int y = 2*b++; System.out.println("nach der Operation des inkrementierenden Operators prefix a=")+a+"x="+x); System.out.println("nach der Operation des inkrementierenden Operators suffix b=")+b+"y="+y); } }
Laufende Ergebnisse:
, nach der Operation des inkrementierenden Operators prefix a=6, x=12, nach der Operation des inkrementierenden Operators suffix b=6, y=10
Der Tisch unten zeigt die relationalen Operatoren, die von Java unterstützt werden
Der Wert der Beispiel-Integer-Variablen A im Tisch ist10, der Wert der Variablen B ist20:
Operator | Beschreibung | Beispiel |
---|---|---|
== | Überprüfen Sie, ob die Werte der beiden Operanden gleich sind, falls sie gleich sind, ist die Bedingung wahr. | (A == B) ist falsch. |
!= | Überprüfen Sie, ob die Werte der beiden Operanden gleich sind, falls sie ungleich sind, ist die Bedingung wahr. | (A != B) ist wahr. |
> | Überprüfen Sie, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist, falls ja, ist die Bedingung wahr. | (A > B) ist falsch. |
< | Überprüfen Sie, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist, falls ja, ist die Bedingung wahr. | (A < B) ist wahr. |
>= | Überprüfen Sie, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist, falls ja, ist die Bedingung wahr. | (A >= B) ist falsch. |
<= | Überprüfen Sie, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist, falls ja, ist die Bedingung wahr. | (A <= B) ist wahr. |
Der folgende einfache Beispielcode zeigt die Beziehung zwischen den Operatoren. Kopieren und fügen Sie den folgenden Java-Code in eine Datei namens Test.java ein und speichern Sie sie, dann kompilieren und ausführen Sie diesen Programm:
Test.java-Datei-Code:
public class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a == b = ") + (a == b) ; System.out.println("a != b = ") + (a != b) ; System.out.println("a > b = ") + (a > b) ; System.out.println("a < b = ") + (a < b) ; System.out.println("b >= a = ") + (b >= a) ; System.out.println("b <= a = ") + (b <= a) ; } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
Java definiert Bit-Operationen, die auf die Integer-Typen (int), Long-Typen (long), Short-Typen (short), Char-Typen (char) und Byte-Typen (byte) und andere Typen angewendet werden.
Bit-Operationen wirken auf alle Bits und führen Operationen bitweise durch. Angenommen, a = 60, b = 13; ihre binäre Formatdarstellung wird wie folgt sein:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
Die folgende Tabelle zeigt die grundlegenden Operationen der Bit-Operationen, unter der Annahme, dass der Wert der Integer-Variable A 60 und der Wert der Variable B ist 13:
Operator | Beschreibung | Beispiel |
---|---|---|
& | wird 0, wenn die entsprechenden Bits beide1dann ist das Ergebnis1sonst 0 | (A&B), wird12also 0000 1100 |
| | wird 0, wenn die entsprechenden Bits beide 0 sind, sonst 1 | (A | B) wird61also 0011 1101 |
^ | wird 0, wenn die entsprechenden Bitwerte gleich sind, sonst1 | (A ^ B) wird49also 0011 0001 |
~ | Bitweise Inversion umkehrt jedes Bit des Operanden, also 0 wird1,1in 0 geändert. | (~A) wird-61also1100 0011 |
<< | Bitweise Linksverschiebung. Der linke Operand wird um die Anzahl der Stellen nach links verschoben, die durch den rechten Operanden angegeben wird. | A << 2得到240, also 1111 0000 |
>> | Bitweise Rechtsverschiebung. Der linke Operand wird um die Anzahl der Stellen nach rechts verschoben, die durch den rechten Operanden angegeben wird. | A >> 2得到15also 1111 |
>>> | Bitweise Rechtsverschiebung mit Nullauffüllung. Der Wert des linken Operanden wird um die Anzahl der Stellen nach rechts verschoben, die freigewordenen Stellen werden mit Null gefüllt. | A>>>2得到15also 0000 1111 |
Ein einfaches Beispielprogramm zeigt die Bit-Operationen. Kopieren und fügen Sie den folgenden Java-Code in eine Datei mit dem Namen Test.java und speichern Sie sie, dann kompilieren und ausführen Sie das Programm:
public class Test { public static void main(String[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = \ + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = \ + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = \ + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = \ + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = \ + c ); c = a >> 2; /* 15 = 1111 */ System.out.println("a >> 2 = \ + c ); c = a >>> 2; /* 15 = 0000 1111 */ System.out.println("a >>> 2 = \ + c ); } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
Die folgende Tabelle zeigt die grundlegenden Operationen der Logikoperationen, unter der Annahme, dass die Boolean-Variablen A true und Variable B false sind
Operator | Beschreibung | Beispiel |
---|---|---|
&& | Gekennzeichnet als Logikundoperator. Die Bedingung ist nur dann true, wenn beide Operanden true sind. | (A && B)为假。 |
| | | Gekennzeichnet als Logikoderoperator. Wenn mindestens ein Operand true ist, ist die Bedingung true. | (A || | B)为真。 |
! | Gekennzeichnet als Logiknegationsoperator. Verwendet, um den logischen Zustand des Operanden umzukehren. Wenn die Bedingung true ist, erhält der Logiknegationsoperator false. | !(A && B)为真。 |
Der folgende einfache Beispielprogramm zeigt die Logikoperationen. Kopieren und fügen Sie den folgenden Java-Code in eine Datei namens Test.java und speichern Sie ihn, dann kompilieren und ausführen Sie dieses Programm:
public class Test { public static void main(String[] args) { boolean a = true; boolean b = false; System.out.println("a && b = ") + (a&&b)); System.out.println("a || b = ") + (a||b) ); System.out.println("!(a && b) = ") + !(a && b)); } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
a && b = false a || b = true !(a && b) = true
Wenn mit Logikoperationen gearbeitet wird, wird das Ergebnis nur true, wenn beide Operanden true sind, aber wenn der erste Operand false ist, ist das Ergebnis zwangsläufig false, und dann wird nicht mehr der zweite Operand überprüft.
public class LuoJi{}} public static void main(String[] args){ int a = 5;//Eine Variable definieren; boolean b = (a<4) && (a++<10); System.out.println("Das Ergebnis des Kurzkettengeschaltungsoperators ist "+b); System.out.println("Der Wert von a ist "+a); } }
Laufende Ergebnisse:
Das Ergebnis des Kurzkettengeschaltungsoperators ist false Das Ergebnis von a ist5
Erklärung:Dieses Programm verwendet den Kurzkettengeschaltungsoperator (&&), der zuerst überprüft, ob a<4 ergeben false, dann muss das Ergebnis von b unbedingt false sein, daher wird der zweite Operator a nicht ausgeführt++<10 entscheidend, daher ist der Wert von a 5。
Hier sind die Zuweisungsoperator, die von der Java-Sprache unterstützt werden:
Operator | Beschreibung | Beispiel |
---|---|---|
= | Einfache Zuweisungsoperator, der den Wert des rechten Operanden dem linken Operanden zuweist | C = A + B wird den Wert von A + Der Wert von B wird der Variable C zugewiesen |
+ = | Additions und Zuweisungsoperator, der die Addition der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesen | C + = A ist äquivalent zu C = C + A |
- = | Subtraktions und Zuweisungsoperator, der die Subtraktion der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesen | C - = A ist äquivalent zu C = C - A |
* = | Multiplikations und Zuweisungsoperator, der die Multiplikation der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesen | C * = A ist äquivalent zu C = C * A |
/ = | Divisions und Zuweisungsoperator, der die Division der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesen | C / = A, wenn C und A den gleichen Typ haben, ist es äquivalent zu C = C / A |
(%)= | Modulo und Zuweisungsoperator, der das Modulo der linken und rechten Operanden berechnet und es der linken Operanden zugewiesen | C %= A ist äquivalent zu C = C % A |
<< = | Linksverschiebungs Zuweisungsoperator | C << = 2ist äquivalent zu C = C << 2 |
>> = | Rechtsverschiebungs Zuweisungsoperator | C >> = 2ist äquivalent zu C = C >> 2 |
&= | Bitweise UND Zuweisungsoperator | C&= 2ist äquivalent zu C = C&2 |
^ = | Bitweise XOR Zuweisungsoperator | C ^ = 2ist äquivalent zu C = C ^ 2 |
| = | Bitweise oder Zuweisungsoperator | C | = 2ist äquivalent zu C = C | 2 |
Der folgende einfache Beispielprogramm zeigt den Zuweisungsoperator. Kopieren und fügen Sie den folgenden Java-Programmcode in die Datei AssignmentOperator.java ein und speichern Sie sie, dann kompilieren und ausführen Sie dieses Programm:
class AssignmentOperator { public static void main(String[] args) { int number1, number2; //Wird5wird der Variable number zugewiesen1 Zahl1 = 5; System.out.println(number1); //Die Variable number2wird der Variable number zugewiesen1 Zahl2 = number1; System.out.println(number2); } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
5 5
Der bedingte Operator wird auch als dreifacher Operator bezeichnet. Der Operator hat3eine Operanden und muss den Wert des booleschen Ausdrucks beurteilen. Der Hauptzweck dieses Operators ist es zu bestimmen, welchen Wert der Variable zugewiesen werden soll.
variable x = (expression) ? value if true : value if false
public class Test { public static void main(String[] args){ int a, b; a = 10; // wenn a gleich 1 gültig, dann wird b 20, andernfalls 30 b = (a == 1) ? 20 : 30; System.out.println("Wert von b ist:"); + b); // wenn a gleich 10 gültig, dann wird b 20, andernfalls 30 b = (a == 10) ? 20 : 30; System.out.println("Wert von b ist:"); + b); } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
Wert von b ist: 30 Wert von b ist: 20
Dieser Operator wird verwendet, um Objekte zu operieren und zu überprüfen, ob das Objekt ein bestimmter Typ (Klassentyp oder Interface-Typ) ist.
Der Format der instanceof-Operator ist wie folgt:
(Object reference variable) instanceof (class/interface type)
Wenn das Objekt auf der linken Seite des Operators der Klasse oder des Interfaces (class/wenn ein Objekt eines Interfaces) existiert, dann ist das Ergebnis wahr.
Hier ist ein Beispiel:
String name = "James"; boolean result = name instanceof String; // Da name vom Typ String ist, wird true zurückgegeben
Wenn das verglichene Objekt mit der rechten Typenkompatibel ist, gibt der Operator immer noch true zurück.
Sehen Sie sich das folgende Beispiel an:
class Vehicle {} public class Car extends Vehicle { public static void main(String[] args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println(result); } }
Die Ergebnisse der Kompilierung und Ausführung der obigen Beispiele sind wie folgt:
true
Wenn mehrere Operatoren in einem Ausdruck vorkommen, in welcher Reihenfolge werden sie berechnet? Dies betrifft das Problem der Priorität der Operatoren. Unterschiedliche Prioritäten der Operatoren in einem mehrfachen Ausdruck können erhebliche Unterschiede im Endresultat verursachen.
例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。
再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。
The operators with the highest precedence in the table are at the top, and the ones with the lowest precedence are at the bottom.
Category | Operator | Associativity |
---|---|---|
Postfix | () [] . (Dot Operator) | Left to Right |
Unary | expr++ expr-- | Left to Right |
Unary | ++expr --expr + - ~ ! | Right to Left |
Multiplicative | * /% | Left to Right |
Additive | + - | Left to Right |
Shift | >> >>> << | Left to Right |
Relation | > >= < <= | Left to Right |
Equal | == != | Left to Right |
Bitwise AND | & | Left to Right |
Bitwise XOR | ^ | Left to Right |
Bitwise OR | | | Left to Right |
Logical AND | && | Left to Right |
Logical OR | | | | Left to Right |
Conditional | ?: | Right to Left |
Assignment | = + = - = * = / =%= >> = << =&= ^ = | = | Right to Left |
Komma | , | Left to Right |