public class qusetion {
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);
}
}
想问问,i、j、k结果分别是多少?
思考一下,答案是:
i:4
j:1
k:11
为什么呢,下面,我们将逐步解析这个过程:
第一句很简单:设置常量 i = 1;
第二句: i = i++;
这个过程需要我们理解,从“=”后开始分析,赋值号是最慢处理的:
- 第一步,将 i 的值1放入栈中,此时i->1
- 第二步:i的值累加1,i->2
- 第三步:将栈中的值1赋给i,i->1
第三句: j = i++;与第二句同理
- 第一步,将 i 的值1放入栈中,此时i->1
- 第二步:i的值累加1,i->2
- 第三步:将栈中的值1赋给【j】,j->1
- 此时已经可以确定,最终j的结果就是1
第四句:k = i + ++i * i++;
- 第一步,将 i 的值1放入栈中,此时i->2
- 第二步:++i:i的值累加1后,放进栈中,i->3
- 第三步:i++:i的值放进栈中,i再累加1,i->4。此时i的运算结束,最终i确定为4
- 栈中的三个数进行运算,结果为3*3+2=11,赋值给k,最终k确定为1
问题解决(撒花)