Court-circuit en Java : une explication et un exemple
En programmation, le court-circuit est une fonctionnalité précieuse où l'évaluation d'une expression se termine prématurément quand son résultat est apparent. Ce comportement a des implications significatives en Java, où les expressions impliquant des opérateurs tels que || (OU logique) et && (ET logique) présentent cette propriété.
Dans un || expression, si le premier opérande est évalué à vrai, les opérandes restants ne sont jamais traités. De même, dans une expression &&, si le premier opérande est évalué à faux, les opérandes restants sont ignorés.
Par exemple, considérons :
<code class="java">if (a == b || c == d || e == f) { // ... }</code>
Si a == b renvoie vrai, le les évaluations ultérieures de c == d et e == f sont ignorées puisque l'expression globale a déjà donné un résultat vrai.
La pertinence du court-circuit devient évidente lorsqu'il s'agit des effets secondaires. Dans l'expression :
<code class="java">if (foo() || bar() || baz()) { // ... }</code>
Si foo() renvoie true, ni bar() ni baz() ne sont exécutés, évitant ainsi tout effet secondaire potentiel qu'ils pourraient entraîner.
Une autre application utile de le court-circuit concerne la gestion des références d'objet :
<code class="java">if (a != null && a.getFoo() != 42) { // ... }</code>
Sans court-circuit, si a était nul, a.getFoo() déclencherait une NullPointerException. Cependant, puisque a != null doit d'abord être évalué comme vrai, l'exception est évitée lorsque a est nul, garantissant ainsi la sécurité.
Il est important de noter que tous les opérateurs ne prennent pas en charge les courts-circuits. Le | Les opérateurs (OU au niveau du bit) et & (ET au niveau du bit), ainsi que la plupart des autres opérateurs mathématiques, ne présentent pas ce comportement. Par conséquent, utilisez || et && avec précaution lors de la recherche d'effets de court-circuit.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!