java - Byte自增問(wèn)題
問(wèn)題描述
Byte a = 123;a++;System.out.println(a);// 124/* * 上面的結(jié)論是: a++的時(shí)候首先是 創(chuàng)建一個(gè)Byte對(duì)象124,然后將a引用指向這個(gè)Byte 124對(duì)象,這個(gè)解釋有問(wèn)題嗎? */Byte b = 126;b = b++;System.out.println(b);// 126/* * 根據(jù)第一段代碼的執(zhí)行結(jié)果; * b=b++,的執(zhí)行操作是首相將b引用賦值給b引用,所以沒(méi)有改變,然后將b引用所指向的對(duì)象自增(這個(gè)實(shí)現(xiàn)的過(guò)程是創(chuàng)建一個(gè)對(duì)象值為127, * 然后讓b引用指向這個(gè)127),如果這樣理解,結(jié)果不應(yīng)該是127嗎 */
求解,謝謝
問(wèn)題解答
回答1:b = b++: 如果了解 C++ 的話,可以參考 ++ 的自增的實(shí)現(xiàn),應(yīng)該就能理解為什么是 126 了
Byte operator++(Byte) { Byte temp = *this; this->value = this->value + 1; return temp;}
可以理解為 b 等于操作自增前的 temp
回答2:++、--務(wù)必單獨(dú)寫,否則就是自己給自己找麻煩。對(duì)于像i=i+++++i這種題目,只能鄙視了……
回答3:已解決http://blog.csdn.net/brooksyc...跟帖接分
回答4:++b和b++的區(qū)別,其實(shí)沒(méi)啥用
回答5:java棧幀含有局部變量表和操作數(shù)棧,++自增操作是對(duì)局部變量表中的值直接操作的,i=i++時(shí),先把局部變量表的i壓入操作數(shù)棧,再把局部變量表的i加1變?yōu)?27,然后把操作數(shù)棧中的i(126)寫回到局部變量表的i中,覆蓋了127數(shù)據(jù),變?yōu)?26了。而++i順序不同,是先自增局部變量表的i,然后再加入操作數(shù)棧的。
相關(guān)文章:
1. javascript - js 有什么優(yōu)雅的辦法實(shí)現(xiàn)在同時(shí)打開的兩個(gè)標(biāo)簽頁(yè)間相互通信?2. html5和Flash對(duì)抗是什么情況?3. javascript - 怎樣限制同一個(gè)瀏覽器不能登錄兩個(gè)賬號(hào)4. java - 新手做一個(gè)安卓視頻播放器,想實(shí)現(xiàn)一個(gè)進(jìn)度條,按鈕那種在視頻下方懸浮的功能,不知道思路!5. css3 - Typecho 后臺(tái)部分表單按鈕在 Chrome 下出現(xiàn)靈異動(dòng)畫問(wèn)題,求解決6. javascript - angular和jquery都用到了$符號(hào),一起用會(huì)不會(huì)沖突?7. java - android代碼重構(gòu):如何把a(bǔ)pp設(shè)置里的頭像UI做成通用的?8. 想找個(gè)php大神仿個(gè)網(wǎng)站。9. javascript - 一個(gè)抽獎(jiǎng)的效果(如圖)?10. javascript - jquery怎么給select option一個(gè)點(diǎn)擊時(shí)觸發(fā)的事件,如圖 如果選擇自定義觸發(fā)一個(gè)時(shí)間?
