English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java-Grundlagen-Tutorial

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java-Exception-Handhabung

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java-Operatoren

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,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
++自增: 操作数的值增加1B++ 或 ++B 等于 21(区别详见下文)
--自减: 操作数的值减少1B-- 或 --B 等于 19(区别详见下文)

Beispiel

下面的简单示例程序演示了算术运算符。复制并粘贴下面的 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

inkrementierend-dekrementierender Operator

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

Relationale Operatoren

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.

Beispiel

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

Bit-Operationen

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:

OperatorBeschreibungBeispiel
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

Beispiel

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

Logikoperator

Die folgende Tabelle zeigt die grundlegenden Operationen der Logikoperationen, unter der Annahme, dass die Boolean-Variablen A true und Variable B false sind

OperatorBeschreibungBeispiel
&&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)为真。

Beispiel

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

Kurzschlusslogikoperator

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。

Zuweisungsoperator

Hier sind die Zuweisungsoperator, die von der Java-Sprache unterstützt werden:

OperatorBeschreibungBeispiel
=Einfache Zuweisungsoperator, der den Wert des rechten Operanden dem linken Operanden zuweistC = 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 zugewiesenC + = A ist äquivalent zu C = C + A
- =Subtraktions und Zuweisungsoperator, der die Subtraktion der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesenC - = A ist äquivalent zu C = C - A
* =Multiplikations und Zuweisungsoperator, der die Multiplikation der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesenC * = A ist äquivalent zu C = C * A
/ =Divisions und Zuweisungsoperator, der die Division der linken und rechten Operanden berechnet und sie der linken Operanden zugewiesenC / = 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 zugewiesenC %= A ist äquivalent zu C = C % A
<< =Linksverschiebungs ZuweisungsoperatorC << = 2ist äquivalent zu C = C << 2
>> =Rechtsverschiebungs ZuweisungsoperatorC >> = 2ist äquivalent zu C = C >> 2
&=Bitweise UND ZuweisungsoperatorC&= 2ist äquivalent zu C = C&2
^ =Bitweise XOR ZuweisungsoperatorC ^ = 2ist äquivalent zu C = C ^ 2
| =Bitweise oder ZuweisungsoperatorC | = 2ist äquivalent zu C = C | 2

Beispiel

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

bedingter Operator(?:)

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

Beispiel

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

instanceof-Operator

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

Java-Operator-Priorität

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.

CategoryOperatorAssociativity
Postfix() [] . (Dot Operator)Left to Right
Unaryexpr++  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 ANDLeft 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
KommaLeft to Right