Comprendre la distinction entre '&' et '&&' en Java
En Java, l'opérateur '&' est traditionnellement associé à opérations au niveau du bit sur des entiers. Cependant, il est récemment apparu que cet opérateur peut également effectuer des opérations booléennes, ce qui le remet en question avec l'opérateur '&&'.
Bien que '&' et '&&' vérifient tous deux la véracité des opérandes booléens, ils diffèrent par leur logique d’évaluation. '&&' effectue une évaluation paresseuse, ce qui signifie qu'il n'évalue l'opérande de droite (RHS) que si l'opérande de gauche (LHS) est vrai. Cela garantit que si l'opérande LHS est faux, l'opérande RHS n'est pas évalué, ce qui évite potentiellement des calculs inutiles et empêche les exceptions de se produire.
En revanche, '&' évalue sans relâche les deux opérandes. Cela peut conduire à des exceptions si l'opérande RHS n'est pas bien défini pour certaines valeurs d'opérande LHS. Prenons l'exemple :
if ((x != 0) & (1/x > 1)) { // ... }
Si « x » est égal à 0, cette expression lèvera une exception lors de la tentative d'évaluation de « 1/x ». Pour éviter cela, utilisez plutôt '&&' :
if ((x != 0) && (1/x > 1)) { // ... }
Ici, il procédera à l'évaluation de '1/x' uniquement si 'x' n'est pas 0, évitant ainsi l'exception.
De plus, les '|', '|>' les homologues des opérateurs booléens se comportent de la même manière. '|>' arrête d'évaluer si le premier opérande est vrai puisque le résultat sera toujours vrai.
Comprendre cette distinction subtile entre '&' et '&&' est crucial pour écrire du code Java efficace et robuste qui évite les erreurs d'exécution causées par évaluation prématurée.
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!