java - Byte自增問題
問題描述
Byte a = 123;a++;System.out.println(a);// 124/* * 上面的結(jié)論是: a++的時候首先是 創(chuàng)建一個Byte對象124,然后將a引用指向這個Byte 124對象,這個解釋有問題嗎? */Byte b = 126;b = b++;System.out.println(b);// 126/* * 根據(jù)第一段代碼的執(zhí)行結(jié)果; * b=b++,的執(zhí)行操作是首相將b引用賦值給b引用,所以沒有改變,然后將b引用所指向的對象自增(這個實(shí)現(xiàn)的過程是創(chuàng)建一個對象值為127, * 然后讓b引用指向這個127),如果這樣理解,結(jié)果不應(yīng)該是127嗎 */
求解,謝謝
問題解答
回答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ú)寫,否則就是自己給自己找麻煩。對于像i=i+++++i這種題目,只能鄙視了……
回答3:已解決http://blog.csdn.net/brooksyc...跟帖接分
回答4:++b和b++的區(qū)別,其實(shí)沒啥用
回答5:java棧幀含有局部變量表和操作數(shù)棧,++自增操作是對局部變量表中的值直接操作的,i=i++時,先把局部變量表的i壓入操作數(shù)棧,再把局部變量表的i加1變?yōu)?27,然后把操作數(shù)棧中的i(126)寫回到局部變量表的i中,覆蓋了127數(shù)據(jù),變?yōu)?26了。而++i順序不同,是先自增局部變量表的i,然后再加入操作數(shù)棧的。
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - immutable配合react提升性能?3. Apache 已經(jīng)把網(wǎng)站根目錄的改為allow from all了,但是服務(wù)器還是不能訪問?4. javascript - 移動端上不能實(shí)現(xiàn)拖拽布局嗎?5. 實(shí)現(xiàn)bing搜索工具urlAPI提交6. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化7. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點(diǎn)疑問8. phpstudy8.1支持win11系統(tǒng)嗎?9. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?10. css - 寫頁面遇到個布局問題,求大佬們幫解答,在線等,急!~

網(wǎng)公網(wǎng)安備