Rechenoperationen
Beginnen wir mit der einfachsten Sache – mit arithmetischen Operationen. Dies sind die bekannten Additionen (+), Subtraktion (-), Multiplikation (*) und Division (/).public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
Konsolenausgabe:
1032
966
32967
30
Das alles haben Sie bereits genutzt. Sie können ihnen eine Operation hinzufügen %
– den Rest der Division.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Konsolenausgabe:
1
In diesem Beispiel dividieren wir 33 durch 2. Als Ergebnis erhalten wir 16 und es bleibt ein zusätzlicher „Schwanz“ übrig, der nicht durch 2 teilbar ist – eins. Dieser „Schwanz“ wird das Ergebnis der Operation „Rest der Teilung“ sein. Java (wie auch Mathematik) implementiert Vergleichsoperatoren . Du kennst sie bestimmt auch aus der Schule:
- gleich (
==
) - mehr (
>
) - weniger (
<
) - größer als oder gleich wie (
>=
) - Gleich oder kleiner als (
<=
) - nicht gleich (
!=
)
==
und nicht mit einem Vorzeichen =
. Das Einheitszeichen =
in Java ist ein Zuweisungsoperator, bei dem einer Variablen eine Zahl, eine Zeichenfolge oder der Wert einer anderen Variablen zugewiesen wird.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// erwarten, dass false auf der Konsole ausgegeben wird
}
}
Konsolenausgabe:
999
Hoppla! Dies ist eindeutig nicht das Ergebnis, das wir erwartet hatten. Dabei handelt es sich um eine völlig andere Art von Daten: Wir hatten erwartet, zu sehen boolean
, bekamen aber eine Zahl. Dies liegt daran, dass wir in Klammern eine Zuweisungsoperation und keinen Vergleich haben. x=y
Der Variablen wurde der Wert y
(999) zugewiesen x
und wir haben ihn dann x
auf der Konsole ausgegeben. Korrekte Möglichkeit:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Konsolenausgabe:
false
Jetzt haben wir die beiden Zahlen richtig verglichen! :) Ein weiteres Merkmal der Zuweisungsoperation ( =
) ist, dass sie „verkettet“ durchgeführt werden kann:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
Konsolenausgabe:
256
Denken Sie daran: Die Zuordnung erfolgt von rechts nach links. Dieser Ausdruck ( x = y = z
) wird in Schritten ausgeführt:
- y = z, also y = 256
- x = y, also x = 256
Unäre Operationen
Sie werden „unär“ genannt, abgeleitet vom Wort „uno“ – „eins“. Sie erhielten diesen Namen, weil sie im Gegensatz zu den vorherigen unter einer Nummer und nicht unter mehreren durchgeführt werden. Diese beinhalten:-
Unäres Minus. Es kehrt das Vorzeichen der Zahl um.
public class Main { public static void main(String[] args) { int x = 999; // das Vorzeichen zum ersten Mal ändern x = -x; System.out.println(x); // das Vorzeichen ein zweites Mal ändern x= -x; System.out.println(x); } }
Konsolenausgabe:
-999 999
Wir haben das unäre Minus zweimal verwendet. Dadurch wurde unsere Zahl zunächst negativ und dann wieder positiv!
-
Inkrementieren (
++
) und Dekrementieren (--
)Eine Operation
++
erhöht eine Zahl um eins und eine Operation--
verringert sie um dieselbe Einheit.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
Konsolenausgabe:
1000 999
x++
- Postfix-Notation ++x
- Präfix-Notation Was ist der grundlegende Unterschied, wenn Sie Plus- und Minuszeichen vor oder nach der Zahl setzen? Schauen wir uns ein Beispiel an:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Konsolenausgabe:
999
Stimmt etwas nicht! Wir wollten um 1 erhöhen x
und der Variablen einen neuen Wert zuweisen y
. Das heißt, y sollte gleich 1000 sein. Aber wir haben ein anderes Ergebnis - 999. Es stellt sich heraus, dass es x
nicht erhöht wurde und die Inkrementierungsoperation nicht funktioniert hat? Wie es funktionierte. Um dies zu überprüfen, versuchen Sie am Ende, x auf der Konsole auszugeben :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Konsolenausgabe:
999
1000
Aus diesem Grund wird die Postfix-Operation auch so aufgerufen: Sie wird nach dem Hauptausdruck ausgeführt. Das heißt in unserem Fall: int y = x++;
Zuerst wird es ausgeführt y = x
(und der Variablen y wird der Anfangswert zugewiesen x
) und erst dann x++
. Was ist, wenn wir mit diesem Verhalten nicht zufrieden sind? Sie müssen die Präfixnotation verwenden:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
In diesem Fall funktioniert es zuerst ++x
und erst danach. y = x;
An diesen Unterschied sollte man sich sofort erinnern, um in einem echten Programm keine Fehler zu machen, bei denen dadurch das gesamte Verhalten auf den Kopf gestellt werden kann :)
Kombinierte Operationen
Darüber hinaus gibt es in Java sogenannte kombinierte Operationen. Sie verwenden eine Kombination aus zwei Operationen:- Abtretung
- Arithmetische Operation
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Konsolenausgabe:
1032
x += y
bedeutet x = x + y
. Der Kürze halber werden zwei Zeichen hintereinander verwendet. Dies funktioniert auch mit Kombinationen aus -=
, und . *=
/=
%=
Logische Operationen
Neben Operationen mit Zahlen verfügt Java auch über Operationen mit booleschen Variablen –true
und false
. Diese Operationen werden mithilfe logischer Operatoren ausgeführt
-
!
— „NOT“-Operator. Kehrt den Wert einer booleschen Variablen umpublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
Konsolenausgabe:
false
-
&&
— Operator „AND“. Gibt nur dann einen Wert zurücktrue
, wenn beide Operanden sindtrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
Konsolenausgabe:
false true
Das Ergebnis der ersten Operation ist
false
, da eine der Bedingungen falsch ist, nämlich 100 > 200. Der Operator verlangt, dass alle Bedingungen wahr sind (wie zum Beispiel in der zweiten Zeile),&&
um zurückzugeben .true
-
||
— „OR“-Operator. Wird zurückgegebentrue
, wenn mindestens einer der Operanden wahr ist.Hier wird unser vorheriges Beispiel anders funktionieren:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
Konsolenausgabe:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “oder” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION