題目
public static void main(String[] args) {
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("k=" + k);
}
解析
public static void main(String[] args) {
int i = 1;
// (i++)=1 ,i=1
i = i++;
// i=1 , (i++)=1 , j=1, i=2
int j = i++;
//i=2, (++i)=3, i=3, (i++)=3 , i=4 ,k=11
int k = i + ++i * i++;
// 4
System.out.println("i=" + i);
// 1
System.out.println("j=" + j);
// 11
System.out.println("k=" + k);
}
.class 文件
public static void main(String[] args) {
int i = 1;
int i = i++;
i = i + 1;
int k = i++ + i * i++;
System.out.println("i=" + i);
System.out.println("j=" + i);
System.out.println("k=" + k);
}
小結
- 賦值 = 虱肄,最后計算
- = 右邊的從左邊加載值一次壓入操作數(shù)棧
- 實際先算哪個辞居,看運算符優(yōu)先級
- 自增宏娄、自減 操作都是直接修改變量的值, 不經過操作數(shù)棧
- 最后的賦值之前掀虎,臨時結果也是存儲在操作數(shù)棧中