Comprendre la double nature de l'opérateur &
En Java, l'opérateur & effectue des opérations ET au niveau du bit sur des entiers. Cependant, il peut également être utilisé pour des opérations ET logiques, ce qui peut prêter à confusion sur sa véritable nature.
Pour clarifier, l'opérateur & est surchargé en interne. Dans le cas des opérandes booléens, il effectue une opération ET logique. Cela signifie qu'il évalue les deux opérandes, déterminant s'ils sont tous les deux vrais avant de renvoyer le résultat.
D'autre part, lorsque l'opérateur & est utilisé avec des opérandes entiers, il effectue une opération ET au niveau du bit. Cela implique de comparer les bits individuels des deux opérandes et de renvoyer un nouvel entier où chaque bit est le résultat des opérations ET au niveau du bit correspondantes sur les bits d'entrée.
Comment ça marche
Pour comprendre la différence entre les opérations ET logiques et au niveau du bit, considérez les expressions :
(x != 0) & (1/x > 1) (x != 0) && (1/x > 1)
En utilisant l'opérateur ET logique (&), les deux les opérandes sont évalués quel que soit le résultat du premier opérande. Cela signifie que si x = 0, l'expression générera une erreur car elle tente de diviser par zéro.
En utilisant l'opérateur ET au niveau du bit (&), cependant, le deuxième opérande n'est évalué que si le premier opérande est vrai. Cela signifie que si x = 0, l'expression sera évaluée comme fausse sans tenter de diviser par zéro.
Comportement similaire avec le OU logique
Le même principe s'applique au Opérateur OU logique (|). L'expression exprA | exprB évalue les deux opérandes quel que soit le résultat du premier opérande, tandis que exprA || exprB n'évalue le deuxième opérande que si le premier opérande est faux.
Conclusion
Bien que l'opérateur & ait des fonctionnalités à la fois logiques et au niveau du bit, la distinction entre les deux opérations est crucial. Le ET logique évalue toujours les deux opérandes, tandis que le AND au niveau du bit évite d'évaluer le deuxième opérande si le premier opérande est faux. De même, le OU logique évalue les deux opérandes, tandis que le OU au niveau du bit évite d'évaluer le deuxième opérande si le premier opérande est vrai.
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!