局部变量&操作数栈面试题

2020-08-13  本文已影响0人  ChadJ

i、j、k分别是多少

public static void main(String[] args) {
    int i = 1;
    i = i++;
    int j = i++;
    int k = i + ++i + i++;
    System.out.println(i);
    System.out.println(j);
    System.out.println(k);
}

分析过程

i = i++;
  1. 将i=1压入操作数栈
  2. 将局部变量i自增成2
  3. 将操作数栈内的1赋值给变量i
int j = i++;
  1. 将i=1压入操作数栈
  2. 将局部变量i自增为2
  3. 将操作数栈中的1赋值给j
int k = i + ++i + i++;
  1. 将i=2压入操作数栈
  2. 将局部变量i自增成3
  3. 将3压入操作数栈
  4. 将3再次压栈
  5. 将局部变量i自增成4
  6. 进行3*3运算,将结果压栈
  7. 计算9+3压栈
  8. 将11赋值给k

总结

上一篇 下一篇

猜你喜欢

热点阅读