Accès rapide :
La vidéo
Utilisation préfixée des opérateurs ++ et --
Utilisation postfixée des opérateurs ++ et --
Cette vidéo vous montre comment utiliser les deux formes (préfixée et postfixée) des opérateurs ++ et -- en Java.
Le langage Java offre des opérateurs d'incrémentation et de décrémentation de variables entières. Ces opérateurs sont en fait repris du langage C et les même règles d'utilisations vous sont proposées.
L'opérateur ++
permet d'incrémenter (ajouter 1 à la valeur courante) le contenu d'une variable.
De même, l'opérateur -- permet de décrémenter (retirer 1 à la valeur courante) le contenu d'une variable.
Dans les deux cas, ces opérateurs peuvent être utilisés en notation préfixée ou bien en notation postfixée.
Nous allons commencer par étudier la forme préfixée de ces opérateurs.
Le moyen le plus simple d'utiliser ces opérateurs consiste à les employer seuls au niveau de l'instruction en cours. Voici un premier exemple simple d'utilisation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class Demo { public static void main( String [] args ) { int value = 10; // On démarre avec une variable initialisée à 10; ++value; // Cette instruction se contente d'incrémenter value de 1 System.out.println( value ); // Affiche 11 --value; // Cette instruction se contente de décrémenter value de 1 System.out.println( value ); // Affiche 10 // Un autre exemple, on fait une boucle de 0 à 9 for( int i=0; i<10; ++i ) { System.out.println( "i == " + i ); } } } |
for
dans un futur chapitre de ce tutoriel.
Maintenant, il faut comprendre qu'on parle d'opérateurs. Un opérateurs, en programmation, est une construction systaxique qui se doit de calculer
une valeur. En conséquence un ++value
calcul un résultat : à savoir la nouvelle valeur après l'incrément. Il est donc possible
d'utiliser ce résultat dans une sur-expression. Regardez attentivement cette exemple.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Demo { public static void main( String [] args ) { int first = 10; int second = 20; int result = ++first + ++second; System.out.println( result ); // Affiche 32 } } |
Comme nous utilisons la forme préfixée de l'opérateur ++
, le compilateur va produire un code machine qui commence par incrémenter
first
, ce qui calcule la valeur 11, puis le code incrémente second
, ce qui calcul 21, pour enfin faire l'addition de
ces deux valeurs et donc calculer 32. Nous sommes bien d'accord, l'opérateur ++
est prioritaire sur l'opérateur +
:
il n'est donc pas nécessaire d'employer des paires de parenthèses.
Il existe donc une autre forme d'utilisation de ces opérateurs : la forme postfixée, c'est à dire que l'opérateur n'est plus placé à la gauche de la variable à incrémenter, mais plutôt à sa droite. Si un tel opérateur est utilisé seul, il n'y a pas de différence avec la forme précédente. Pour vous en convaincre, veuillez tester cet exemple.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class Demo { public static void main( String [] args ) { int value = 10; // On démarre avec une variable initialisée à 10; value++; // Cette instruction se contente d'incrémenter value de 1 System.out.println( value ); // Affiche 11 value--; // Cette instruction se contente de décrémenter value de 1 System.out.println( value ); // Affiche 10 // Un autre exemple, on fait une boucle de 0 à 9 for( int i=0; i<10; i++ ) { System.out.println( "i == " + i ); } } } |
Par contre, si l'un de ces deux opérateurs (++
ou --
) est utilisé en forme postfixée dans une expression, alors le résultat
produit pourra être surprenant. Pour comprendre, analysons le programme suivant.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Demo { public static void main( String [] args ) { int first = 10; int second = 20; int result = first++ + second++; System.out.println( result ); // Affiche 30 } } |
Ce qui est surprenant, c'est que l'incrémentation sera bien faite, mais après le calcul de l'expression en cours et juste avant le ;
qui termine l'instruction en cours. Du coup, on peut presque dire que int result = first++ + second++;
est équivalent à
int result = first + second; ++first; ++second;
.
Ne vous trompez donc pas dans la forme d'utilisation souhaitée pour vos opérateurs d'incrémentation et de décrémentation, vous pouriez le regreter. ;-)
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :