Maison  >  Questions et réponses  >  le corps du texte

java - Byte自增问题

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吗
         */

求解,谢谢

PHPzPHPz2742 Il y a quelques jours471

répondre à tous(5)je répondrai

  • 大家讲道理

    大家讲道理2017-04-18 10:58:08

    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

    Byte operator++(Byte) {
        Byte temp = *this;
        this->value = this->value + 1;
        return temp;
    }

    On peut comprendre que b est égal à temp avant que l'opération ne soit incrémentée

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:58:08

    ++, -- 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épondre
    0
  • 高洛峰

    高洛峰2017-04-18 10:58:08

    Résolu
    http://blog.csdn.net/brooksyc...
    Publier des commentaires

    répondre
    0
  • 迷茫

    迷茫2017-04-18 10:58:08

    La différence entre ++b et b++ est en fait inutile

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:58:08

    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.

    répondre
    0
  • Annulerrépondre