Java bietet zwei interessante Boolesche Operatoren, die in den meisten anderen Computersprachen nicht zu finden sind. Diese sekundären Versionen von UND und ODER werden als logische Kurzschlussoperatoren bezeichnet . Wie Sie aus der vorhergehenden Tabelle sehen können, ergibt der OR-Operator true, wenn A true ist, unabhängig davon, was B ist.
In ähnlicher Weise führt der AND-Operator zu false, wenn A false ist, unabhängig davon, was B ist. Wenn Sie die ||
und &&
-Formen anstelle der |
und &
-Formen dieser Operatoren verwenden, wird Java nicht die Mühe machen, den rechten Operanden allein auszuwerten. Dies ist sehr nützlich, wenn der rechte Operand davon abhängt, dass der linke wahr oder falsch ist, um ordnungsgemäß zu funktionieren.
Das folgende Codefragment zeigt beispielsweise, wie Sie die logische Kurzschlussauswertung nutzen können, um sicherzustellen, dass eine Teilungsoperation gültig ist, bevor Sie sie auswerten:
if ( denom != 0 && num / denom >10)
Da die Kurzschlussform von AND ( &&
) verwendet wird, besteht kein Risiko, dass eine Laufzeitausnahme durch Teilen durch Null verursacht wird. Wenn diese Codezeile mit der einzelnen &
Version von AND geschrieben würde, müssten beide Seiten ausgewertet werden, was zu einer Laufzeitausnahme führen würde, wenn denom
Null ist.
Es ist üblich, die Kurzschlussformen von UND und ODER in Fällen mit boolescher Logik zu verwenden, wobei die Einzelzeichenversionen ausschließlich für bitweise Operationen übrig bleiben. Es gibt jedoch Ausnahmen von dieser Regel. Betrachten Sie beispielsweise die folgende Aussage:
if ( c==1 & e++ < 100 ) d = 100;
Hier stellt die Verwendung einer einzelnen &
Option sicher, dass die Inkrementierungsoperation angewendet wird, e
unabhängig davon, ob sie c
gleich 1 ist oder nicht.