Ich kann Ihnen hier sagen, dass der Unterschied zwischen dem &
Betreiber und dem &&
Betreiber ist, dass &&
die erste expresion zu überprüfen, und wenn es falsch ergibt, dann wird es einfach aus der Kontrolle brechen, aber die &
Betreiber wird den folgenden Ausdruck ausführen, unabhängig davon, ob der erste falsch war oder nicht.
Also, der Code, den Sie geschrieben haben, wird (i<(books.size()))
überprüfen, und ob das falsch ist oder nicht, !((books.get(i)).areYouBook(a))
wird immer noch ausgeführt werden.
Wenn Sie jedoch &&
und (i<(books.size()))
falsch verwendet haben, wird der zweite Teil Ihres Schecks, der !((books.get(i)).areYouBook(a))
ist, nicht ausgeführt.
Ich hoffe, das hilft.
Edit:
Sie erwähnten einen Fehler ausgelöst wird, wenn Sie den &
Operator anstelle des &&
Operator verwendet.Da der Operator &
den zweiten Ausdruck ausführt, selbst wenn der erste falsch ist, frage ich mich, ob Ihr zweiter Ausdruck tatsächlich einen Fehler wirft, und wird aufgerufen, wenn Sie &
verwenden.
Edit 2:
Ok. Sagen wir, dass books
eine Größe von 12 (Indizes 0-11) nur zur Demonstration hat. Wenn Sie also den Operator &
verwenden, wird Ihre while-Schleife ausgeführt, bis i
12 ist. Wenn i
12 ist, führt die Schleife (i<(books.size()))
aus (was false zurückgibt) und FORTSETZEN, um !((books.get(i)).areYouBook(a))
auszuführen. Innerhalb des zweiten Ausdrucks wird books.get(i)
aufgerufen, wenn i
12 ist. Die books
Liste geht nur von den Indizes 0 bis 11 und wirft eine java.lang.IndexOutOfBoundsException
. durch die & & Symbol dargestellt zu verwenden, ist das heißt wahre & & Falsch Entschlüssen auf False
Weil '&' ist die [bitweise AND-Operator] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts /operators.html), nicht das logische UND. – domsson
Außerdem empfehle ich Ihnen, die Klammern '{}' für Ihre Blöcke ('while',' if', 'else') die ganze Zeit zu verwenden und Ihren Code korrekt einzurücken. Das ist nicht nur schwer zu lesen und zu verstehen, es muss auch auf eine Weise ausgeführt werden, die Sie nicht beabsichtigt haben. – domsson
[Unterschied zwischen & und &&] (http://stackoverflow.com/questions/5564410/difference-between-and) – matoni