ja das kenne ich aber das wird mir als fehler angezeigt
Alt Gr
+ zweimal |
drücken, um das logische Or einzugeben. Das andre is nen bitweiser Operator.Das ist nicht ganz richtig. Sind die beiden Operanden boolesche Ausdrücke, dann liefert der bitweise |-Operator ein boolean, so dass er effektiv zum logischen OR-Operator wird. In Bezug auf die Logik besteht der Unterschied zwischen | und || lediglich darin, dass || den rechten Teil nur auswertet, wenn der linke Teil false liefert. Aussagenlogisch liefern also beide das gleiche Ergebnis, nur durch die unterschiedliche Auswertung kann es passieren, dass | zu Exceptions führt, während || korrekt durchläuft:Du musstAlt Gr
+ zweimal|
drücken, um das logische Or einzugeben. Das andre is nen bitweiser Operator.
boolean nullOrEmpty;
nullOrEmpty = list == null | list.isEmpty(); // führt zu einer NullPointerException, falls list == null
nullOrEmpty = list == null || list.isEmpty(); // ist ok
Genau, und selbst in der JLS steht "then the type of the bitwise operator expression is boolean", während in der Überschrift | als logischer Operator genannt wird. Das ergibt auch Sinn, da nur 1 Bit für ein boolean benötigt wird und es bei einer bidrektionalen Abbildung von "0" auf false und true auf "1" Jacke wie Hose ist, ob man nun ein bitweises or logisches OR hat: das Ergebnis ist faktisch das gleiche.aber da ist ja noch 15.22.2![]()
boolean expr1 = ersterAusdruck();
boolean expr2 = zweiterAusdruck();
if (expr1 || expr2) {
...
}
if (ersterAusdruck() | zweiterAusdruck()) {
...
}
Benötigt wird nur ein Bit, aber zumindest in ein paar anderen Sprachen oder auch einigen Datenbanken werden immer alle auf 0 oder 1 gesetzt. Wie ist das in Java?
The Java Virtual Machine encodes boolean array components using 1 to represent true and 0 to represent false. Where Java programming language boolean values are mapped by compilers to values of Java Virtual Machine type int, the compilers must use the same encoding.
In Oracle's Java Virtual Machine implementation, arrays of type boolean (atype is T_BOOLEAN) are stored as arrays of 8-bit values and are manipulated using the baload and bastore instructions (§baload, §bastore) which also access arrays of type byte. Other implementations may implement packed boolean arrays; the baload and bastore instructions must still be used to access those arrays.
Da hatte ich mich etwas ungünstig ausgedrückt, weil es mir nur um die logische Sicht ging: ich kann mir ein boolean als ein Bit vorstellen usw.Benötigt wird nur ein Bit, aber zumindest in ein paar anderen Sprachen oder auch einigen Datenbanken werden immer alle auf 0 oder 1 gesetzt.