Wenn Sie versuchen, etwas zu tun:Warum funktioniert (boolean^int> 0)?
if (true^1) {
//do something
}
der Compiler sagt vernünftig, dass Betreiber ^
nicht für Argumenttypen boolean und int definiert ist. Aber wenn Sie es wie folgt verwenden:
if (true^1 > 0) {
//do something
}
den Code kompiliert (für Java 8 zumindest) und einwandfrei funktioniert. Grundsätzlich diese Operationen:
false^-1 > 0
false^1 > 0
true^-1 > 0
true^1 > 0
Act wie eine gültige logische XOR:
|^
-----+--
F F | F
F T | T
T F | T
T T | F
Könnte jemand bitte erklären, was unter der Haube passiert?
XORed Ich empfehle Sie lernen über [* Operator Vorrang *] (http://introcs.cs.princeton.edu/java/11precedence/). –
@Someprogrammerdude Um fair zu sein, ist die Tatsache, dass bitweise Operatoren eine niedrigere Priorität als Vergleiche haben, ein besonders unspektakulärer Aspekt der Operatorpräzedenz von Sprachen, wo dies der Fall ist. – Random832
Das ist, warum Sie lernen müssen, @random :-) –