java 中 a = a++ 的分析
生活随笔
收集整理的這篇文章主要介紹了
java 中 a = a++ 的分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
下面我們來看一段代碼
public static void main(String[] args) {int ret = 1;int a = 10;ret = a++;a = a++;System.out.println(ret);System.out.println(a);}大家可以估計一下輸出的值
是不是 ret = 10 , a = 12 ?
但其實不是的 ret = 10 ,a = 11
其實這樣賦值的本質是
java中 每個方法都有一個屬于自己的地方,叫做棧幀
棧幀又分為:局部變量表,操作數(shù)棧等等
局部變量表 : 主要用戶存儲方法參數(shù)和定義在方法體內的局部變量
操作數(shù)棧 : 主要用于保存計算過程的中間結果,同時作為計算過程中變量臨時的存儲空間
下面就是 a = a++;的具體詳細過程
先將 a的值 賦值一份到操作數(shù)棧中,然后在對局部變量表中的a加1,此時a = 12
然后將a = 11 的值從操作數(shù)棧中取出來賦值給a
這樣就將a == 12的值給覆蓋了
大家可以自己分析一下 ret = a++; 和 a = a++; 的區(qū)別
總結
以上是生活随笔為你收集整理的java 中 a = a++ 的分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer07.重建二叉树
- 下一篇: 剑指offer 11. 旋转数组的最小数