Byte a = 123;
a++;
System.out.println(a);// 124
/*
* 上面的结论是: a++的时候首先是 创建一个Byte对象124,然后将a引用指向这个Byte 124对象,这个解释有问题吗?
*/
Byte b = 126;
b = b++;
System.out.println(b);// 126
/*
* 根据第一段代码的执行结果;
* b=b++,的执行操作是首相将b引用赋值给b引用,所以没有改变,然后将b引用所指向的对象自增(这个实现的过程是创建一个对象值为127,
* 然后让b引用指向这个127),如果这样理解,结果不应该是127吗
*/
求解,谢谢
b = b++ : Si vous connaissez le C++, vous pouvez vous référer à l'implémentation de l'auto-incrémentation de ++, et vous devriez pouvoir comprendre pourquoi il s'agit de 126
On peut comprendre que b est égal à temp avant que l'opération ne soit incrémentée
++, -- doit être écrit séparément, sinon vous vous causerez des ennuis.
Pour des questions comme
i=i+++++i
, je ne peux que mépriser...Résolu
http://blog.csdn.net/brooksyc...
Publier des commentaires
La différence entre ++b et b++ est en fait inutile
Le cadre de pile Java contient une table de variables locales et une pile d'opérandes. L'opération d'incrémentation ++ est une opération directe sur les valeurs de la table de variables locales Lorsque i=i++, ajoutez d'abord. i dans la table des variables locales. Poussez-le dans la pile d'opérandes, puis ajoutez 1 à i dans la table des variables locales pour devenir 127, puis écrivez i (126) dans la pile d'opérandes dans i dans la table des variables locales, couvrant le 127 données et les changer en 126. L'ordre de ++i est différent. Il incrémente d'abord i dans la table des variables locales, puis l'ajoute à la pile d'opérandes.