上代碼:
public class Test1 {
public static void main(String[] args) {
//1. i=3 k = 5
int i = 1;
int k = i + ++i*i++;
System.out.println("i:"+i+" K:"+k);
//2.i = 7
i=1;
i = i++ + i++ + ++i;
System.out.println(i);
}
}
只要牢記一句話,i++後++,++i先++
好接下來,開始。
對於 int k = i + ++i*i++;
第一步:給在局部變量表的i賦值爲1,然後i入棧
第二步:執行 + ++i,++i使得局部變量表中的值自增1,然後此時的i再入棧
第三步:執行*i++,先執行i++,i++使得,局部變量表中的i(2)先入棧,再將局部變量的i自增
第四步:操作數棧中按算符進行運算,結果爲5,再賦值給局部變量表中的k,所以最終,i爲3,k爲5.
對於: i=1; i = i++ + i++ + ++i;
第一步:給局部變量表i賦值,使得i爲1.執行i++,局部變量表i先入棧,i再自增1
第二步:執行 + i++,使得此時的i(2)入棧,然後局部變量表i再自增1
第三步:操作數對1+2進行運算後爲3,執行+ ++i,先對局部變量表i自增爲4,再入棧
第四步:對棧內數進行計算,然後出棧,賦值給局部變量表i,輸出