自增问题

先看一段代码
  1. public class SelfAddDemo {
  2. public static void main(String[] args) {
  3. int i = 1;
  4. i = i++;
  5. int j = i++;
  6. int k = i + ++i * i++;
  7. System.out.println("i:" + i);
  8. System.out.println("j:" + j);
  9. System.out.println("k:" + k);
  10. }
  11. }

看一下运行结果

  1. i:4
  2. j:1
  3. k:11

分析问题
  • int i = 1 将i赋值为1
  • i = i++这段代码其实原理就相当于i = i, i++ 是先赋值,再计算
  • j = i++和上面一样,相当于j=i,当然,这里取值为1
  • i ik = i +这里注意空格,由于上面i++,这里方法入栈时i=2, 看等号右边,第一个i+入栈时 i=2, 后面ii这里, i先计算,此时为3,i也为3;后面i其实就是i=i=3,因此最后计算的算式为2+3*3=11