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嗎 */
求解,謝謝
問題解答
回答1:b = b++: 如果了解 C++ 的話,可以參考 ++ 的自增的實現,應該就能理解為什么是 126 了
Byte operator++(Byte) { Byte temp = *this; this->value = this->value + 1; return temp;}
可以理解為 b 等于操作自增前的 temp
回答2:++、--務必單獨寫,否則就是自己給自己找麻煩。對于像i=i+++++i這種題目,只能鄙視了……
回答3:已解決http://blog.csdn.net/brooksyc...跟帖接分
回答4:++b和b++的區別,其實沒啥用
回答5:java棧幀含有局部變量表和操作數棧,++自增操作是對局部變量表中的值直接操作的,i=i++時,先把局部變量表的i壓入操作數棧,再把局部變量表的i加1變為127,然后把操作數棧中的i(126)寫回到局部變量表的i中,覆蓋了127數據,變為126了。而++i順序不同,是先自增局部變量表的i,然后再加入操作數棧的。
相關文章:
1. mysql - ubuntu開啟3306端口失敗,有什么辦法可以解決?2. php傳對應的id值為什么傳不了啊有木有大神會的看我下方截圖3. extra沒有加載出來4. javascript - 微信網頁開發從菜單進入頁面后,按返回鍵沒有關閉瀏覽器而是刷新當前頁面,求解決?5. mysql - C#連接數據庫時一直這一句出問題int i = cmd.ExecuteNonQuery();6. mysql日期類型默認值’0000-00-00’ 報錯7. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?8. mysql replace 死鎖9. windows - asp.net連接上mysql之后如何調用?比如下面的登錄驗證功能怎么實現10. android - 安卓做前端,PHP做后臺服務器 有什么需要注意的?
