web-dev-qa-db-fra.com

Java OR priorité de l'opérateur

Comment enchaîner les instructions conditionnelles dans Java d'une manière telle que si b est faux, alors ne cochez pas c?

Si a et c sont faux, et b est vrai, c sera-t-il vérifié?

if (a || b || c)

Je recherche une fonctionnalité similaire qui PHP est valable avec une différence entre OR et ||

8
Szymon Toda

Le Java || L'opérateur (logique ou opérateur) n'évalue pas les arguments supplémentaires si l'opérande de gauche est true. Si vous le souhaitez, vous pouvez utiliser | (au niveau du bit ou opérateur), bien que, selon le nom, ce soit un peu un hack.

http://docs.Oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.2

Ainsi, && calcule le même résultat que & sur les opérandes booléens. Elle ne diffère que par le fait que l'expression d'opérande de droite est évaluée de manière conditionnelle plutôt que toujours.

http://docs.Oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.24

Ainsi, || calcule le même résultat que | sur les opérandes booléens ou booléens. Elle ne diffère que par le fait que l'expression d'opérande de droite est évaluée de manière conditionnelle plutôt que toujours.

Extra: il est considéré comme un mauvais style de programmation de dépendre de cette sémantique pour appeler conditionnellement du code avec des effets secondaires.

14
Silly Freak

c ne sera pas vérifié. Pour le prouver, vous pouvez utiliser le code suivant:

boolean a() {
  System.out.println("a")
  return false;
}

boolean b() {
  System.out.println("b")
  return true;
}

boolean c() {
  System.out.println("c")
  return true;
}

void test() {
  if(a() || b() || c()) {
    System.out.println("done")
  }
}

La sortie sera:

a
b
done
2
Weibo Li

si (a || b || c)

pour votre cas,

a est vrai alors b et c non vérifiés.

a est faux et b est vrai alors c n'est pas vérifié.

a et b sont faux alors c est vérifié.

le côté gauche de l'opérateur est évalué en premier

1
Rakesh Chaudhari

Si a est faux et b est vrai, alors c ne sera pas évalué.

Voir ceci réponse qui résout le court-circuit des opérateurs logiques en Java.

0
Louis

1) Comment chaîner des instructions conditionnelles en Java de manière à ce que si b est faux, alors ne cochez pas c ?

  • Pourquoi avez-vous besoin de cela?? il tue OR logique - neways c alors est immatériel
  • donc votre réponse est simplement if (a || b)
  • ou vous cherchez peut-être if (a || (b && c))

2) Si a et c sont faux et b est vrai, c sera-t-il vérifié? [si (a || b || c)]

  • Nan
  • || effectue une évaluation des courts-circuits. Ainsi, si a est false, b sera vérifié et si b est vrai, c ne sera pas vérifié

Pour en savoir plus sur l'évaluation des courts-circuits: voir

0
Mitesh Pathak