Maison >Java >javaDidacticiel >Java et opérateur : ET au niveau du bit ou ET logique – Quand fait-il quoi ?

Java et opérateur : ET au niveau du bit ou ET logique – Quand fait-il quoi ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 21:15:19790parcourir

Java's & Operator: Bitwise AND or Logical AND – When Does It Do What?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn