En Java, quelle est la différence technique entre les expressions "++ x" et "x = x + 1"?


Réponse 1:

Cher ami, veuillez dire à votre professeur qu'il avait l'habitude de répondre à ce genre de questions par lui-même, c'est pourquoi ils sont des professionnels.

De toute façon, passons à la question:

Disons que x = 9. Maintenant, si nous utilisons ++ x dans l'une des expressions, cela signifie d'abord que la valeur de x est incrémentée puis utilisée, c'est-à-dire que partout où vous utilisez ++ x, la valeur 10 au lieu de 9 sera utilisée et la valeur restera 10 jusqu'à ce qu'un autre changement se produise.

Maintenant, si nous utilisons (x = x + 1 ou x + = 1 ou x ++), la valeur est d'abord utilisée puis incrémentée. L'expression où x = x + 1 est utilisé pour le premier utilisera la valeur 9, puis la valeur 10 sera stockée dans x jusqu'à ce qu'un autre changement se produise.

Je pense que la différence est claire. Sinon, laissez un commentaire.


Réponse 2:
class quora {public static void main (String [] args) {int x = 5; x = x + 1; System.out.println (x); x ++; System.out.println (x); }}
Compilé à partir de la classe "quora.java" quora {quora (); Code: 0: aload_0 1: invokespecial # 1 // Méthode java / lang / Object. " ":() V 4: retourne le public void statique principal (java.lang.String []); Code: 0: iconst_5 1: istore_1 2: iload_1 3: iconst_1 4: iadd // x = x + 1 5: istore_1 6 : getstatic # 2 // Champ java / lang / System.out: Ljava / io / PrintStream; 9: iload_1 10: invokevirtual # 3 // Méthode java / io / PrintStream.println: (I) V 13: iinc 1, 1 // x ++ 16: getstatic # 2 // Champ java / lang / System.out: Ljava / io / PrintStream; 19: iload_1 20: invokevirtual # 3 // Méthode java / io / PrintStream.println: (I) V 23: revenir}