问题背景:
偶然在工作中遇到一个Bug, 定位到之后发现犯了一个基础的错误,特此记录一下。大家一起学习
1. 题目
public class test01 {
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);
}
}
2. 分析
让我们一起了解下。
第一步:int i = 1 简单的赋值操作
第二步:i = i++
结果:i 还是等于1
第三步:int j = i++
结果:i 在局部变量表中变成了2,操作数栈中的 i 值为1,并且将 i 的值返回给 j,即此条语句以后,i = 2,j = 1
第四步:int k = i + ++i * i++
结果:局部变量表中的i = 4,k = 11
3. 结果
大家一起巩固下!