Java Language Ordre d'évaluation des expressions


Exemple

Les expressions Java sont évaluées selon les règles suivantes:

  • Les opérandes sont évalués de gauche à droite.
  • Les opérandes d'un opérateur sont évalués avant l'opérateur.
  • Les opérateurs sont évalués en fonction de la priorité des opérateurs
  • Les listes d'arguments sont évaluées de gauche à droite.

Exemple simple

Dans l'exemple suivant:

int i = method1() + method2();

l'ordre d'évaluation est:

  1. L'opérande gauche = opérateur est évalué à l'adresse i .
  2. L'opérande gauche de l'opérateur + ( method1() ) est évalué.
  3. Le bon opérande de l'opérateur + ( method2() ) est évalué.
  4. L'opération + est évaluée.
  5. L'opération = est évaluée, affectant le résultat de l'addition à i .

Notez que si les effets des appels sont observables, vous pourrez observer que l'appel à la method1 se produit avant l'appel à la method2 .

Exemple avec un opérateur qui a un effet secondaire

Dans l'exemple suivant:

int i = 1;
intArray[i] = ++i + 1;

l'ordre d'évaluation est:

  1. L'opérande gauche de l'opérateur = est évalué. Cela donne l'adresse de intArray[1] .
  2. Le pré-incrément est évalué. Cela ajoute 1 à i et évalue à 2 .
  3. L'opérande de droite du + est évalué.
  4. L'opération + est évaluée à: 2 + 1 -> 3 .
  5. L'opération = est évaluée, affectant 3 à intArray[1] .

Notez que puisque l'opérande gauche de = est évalué en premier, il n'est pas influencé par l'effet secondaire de la sous-expression ++i .

Référence: