java - Byte自增問題
PHPz
PHPz 2017-04-18 10:56:08
0
5
507
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吗
         */

求解,謝謝

PHPz
PHPz

学习是最好的投资!

全部回覆(5)
大家讲道理

b = b++: 如果了解 C++ 的話,可以參考 ++ 的自增的實現,應該就能理解為什麼是 126 了

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

可以理解為 b 等於操作自增前的 temp

Ty80

++、--務必單獨寫,否則就是自己找麻煩。
對於像i=i+++++i這種題目,只能鄙視了…

小葫芦

已解決
http://blog.csdn.net/brooksyc...
跟帖接分

迷茫

++b和b++的差別,其實沒啥用

巴扎黑

java棧幀含有局部變數表和操作數棧,++自增操作是對局部變數表中的值直接操作的,i=i++時,先把局部變數表的i壓入操作數棧,再把局部變數表的i加1變成127,然後把操作數棧中的i(126)寫回局部變數表的i中,覆蓋了127數據,變成126了。而++i順序不同,是先自增局部變數表的i,然後再加入操作數棧的。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板