Die duale Natur des &-Operators verstehen
In Java führt der &-Operator bitweise UND-Operationen für ganze Zahlen durch. Allerdings kann er auch für logische UND-Operationen verwendet werden, was zu Verwirrung über seine wahre Natur führt.
Zur Klarstellung: Der &-Operator ist intern überlastet. Bei booleschen Operanden führt es eine logische UND-Verknüpfung durch. Dies bedeutet, dass beide Operanden ausgewertet werden und festgestellt wird, ob beide wahr sind, bevor das Ergebnis zurückgegeben wird.
Wenn der &-Operator andererseits mit ganzzahligen Operanden verwendet wird, führt er eine bitweise UND-Operation aus. Dabei werden einzelne Bits der beiden Operanden verglichen und eine neue Ganzzahl zurückgegeben, wobei jedes Bit das Ergebnis der entsprechenden bitweisen UND-Operationen an den Eingangsbits ist.
So funktioniert es
Um den Unterschied zwischen logischen und bitweisen UND-Operationen zu verstehen, betrachten Sie die Ausdrücke:
(x != 0) & (1/x > 1) (x != 0) && (1/x > 1)
Verwenden Sie den logischen UND-Operator (&), Beide Operanden werden unabhängig vom Ergebnis des ersten Operanden ausgewertet. Das heißt, wenn x = 0, gibt der Ausdruck einen Fehler aus, weil er versucht, durch Null zu dividieren.
Mit dem bitweisen UND-Operator (&) wird der zweite Operand jedoch nur ausgewertet, wenn der erste Operand dies ist WAHR. Das heißt, wenn x = 0, wird der Ausdruck als falsch ausgewertet, ohne dass versucht wird, durch Null zu dividieren.
Ähnliches Verhalten mit logischem ODER
Das gleiche Prinzip gilt für logischer ODER-Operator (|). Der Ausdruck exprA | exprB wertet beide Operanden unabhängig vom Ergebnis des ersten Operanden aus, während exprA || exprB wertet den zweiten Operanden nur aus, wenn der erste Operand falsch ist.
Fazit
Während der &-Operator sowohl logische als auch bitweise Funktionalität hat, besteht der Unterschied zwischen den beiden Operationen entscheidend. Logisches AND wertet immer beide Operanden aus, während bitweises AND die Auswertung des zweiten Operanden vermeidet, wenn der erste Operand falsch ist. In ähnlicher Weise wertet das logische ODER beide Operanden aus, während das bitweise ODER die Auswertung des zweiten Operanden vermeidet, wenn der erste Operand wahr ist.
Das obige ist der detaillierte Inhalt vonJavas &-Operator: Bitweises UND oder logisches UND – wann macht es was?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!