Ich lerne seit einiger Zeit Java und lerne noch immer neue Syntax-Tricks. Im Android-Quellcode bin ich darauf gestoßen:
boolean retry = id == 1;
Was heißt das?
retry
ist true
, wenn id
den Wert 1 hat, andernfalls retry
ist false
.
id == 1
ist ein boolescher Ausdruck, der true ist, wenn id
gleich 1
ist, andernfalls false.
boolean retry = id == 1;
deklariert eine boolesche Variable mit dem Namen retry
und weist dieser Variablen den Wert des booleschen Ausdrucks id == 1
zu.
Es deklariert also eine boolesche Variable, die wahr ist, wenn id == 1
, und sonst falsch.
Um es etwas klarer zu machen, schreiben Sie es vielleicht so:
boolean retry = (id == 1);
Es ist das gleiche wie
boolean retry;
if (id == 1)
retry = true;
else
retry = false;
==
, das Gleichheits-Prädikat, hat eine höhere Priorität als =
, der Zuweisungsoperator.
Daher wird zuerst id == 1
ausgewertet und dann dessen Wert (entweder wahr oder falsch) retry
zugewiesen.
Die boolesche Wiederholung erhält den Wert "true", wenn id == 1
.
Es ist das gleiche wie:
boolean retry;
if (id == 1) {
retry = true;
} else {
retry = false;
}
zuerst wird id
mit 1 bewertet, daher ist id
vermutlich integer
.
Danach wird dem Wert retry
diese Bewertung zugewiesen. Wenn id
gleich 1 ist, wird retry
true
und für jeden anderen Wert von id
wird retry
false
.
Ich finde, dass die Verwendung von Parens dazu beiträgt, die Verwirrung hinter komplexen Aussagen wie dieser zu beseitigen.
boolean retry = (id == 1);
macht mir viel mehr Sinn. Hier ist klar, dass (id == 1)
ein Ausdruck ist, der ausgewertet wird, und das Ergebnis wird boolean retry
zugewiesen.
Es handelt sich dabei um eine ternäre Operation, (x) ? true : false
in C, C++, C # usw.
Die ähnliche Syntax:
boolean retry = (id == 1)? true: false;
Oder es kann anders geschrieben werden:
boolean retry;
if (id == 1) {
retry = true;
} else {
retry = false;
}
Diese Zeile erstellt eine boolesche Variable und setzt sie auf true
, wenn id
gleich 1 ist, und false
, wenn dies nicht der Fall ist.
Es ist möglicherweise einfacher zu sehen, was passiert, wenn Sie es so ansehen:
boolean retry = (id == 1);
Im Grunde prüft es, ob id gleich 1 ist, und weist das Ergebnis dann der Variablen erneut zu.
Es ist im Grunde dasselbe wie retry = (id == 1)
. Es wertet den booleschen Ausdruck aus und weist ihn retry
zu.
retry
weist einen Ausdruck zu, der entweder wahr oder falsch ist, da retry
eine boolean
..__ ist. Ferner wird ==
zuerst gelöst und dann retry
zugewiesen.
Es ist eine Möglichkeit, eine boolesche Variable zu definieren.
Wenn id
1
ist, ist der Wert von retry
true
.
Die boolesche Variable retry
erhält den Wert 0
oder 1
, je nachdem, ob der Ausdruck id==1
true
oder false
zurückgibt.
Wenn der Wert von id
1
ist, entspricht id==1
true
, also retry=1
.
Wenn id
den Wert 0
hat, entspricht id==1
false
, also retry=0
.
Bitte beachten Sie, dass ==
ein Vergleichsoperator ist.
Der Code kann einfach so schreiben, dann wird er leicht verstanden, denkst duso? Vielen Dank, dass Sie die Chance gegeben haben, die Frage zu beantworten!
boolean retry = (id == 1);