万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • 笔试面试相关
  • Java复制数组的四种方法
  • interview_class_loader
  • 笔试面试题临时
    • 自增变量
  • interview
2022-05-11
目录

笔试面试题临时

# 笔试面试题临时

# 自增变量

请问下面程序的运行结果:

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=4
j=1
k=11

核心字节码:

 0 iconst_1
 1 istore_1  
   // 以上为 int i = 1; i存储在局部变量表中,值为1。 
 2 iload_1  // 把i的值压入操作数栈
 3 iinc 1 by 1 // 局部变量表i自增1
 6 istore_1 // 把操作数栈中的值赋值给i(由2又被赋值为1)
   // 以上为i = i++; 此刻,i = 1
 7 iload_1
 8 iinc 1 by 1
11 istore_2
   // 以上为int j = i++;与上一句相似,不过赋值对象不同。此刻,i = 2, j = 1
12 iload_1 // i(2)压入操作数栈
13 iinc 1 by 1 // ++i,先局部变量表i自增1,变成3
16 iload_1 // 后将i(3)压入操作数栈
17 iload_1 // i++,将i(3)压入操作数栈
18 iinc 1 by 1 // 后局部变量表i自增1,变成4
21 imul // 此时,栈由定至低为 3 3 2, 3*3 = 9
22 iadd // 9 + 2 = 11
23 istore_3 // 11 赋值给 k
    // 以上为int k = i + ++i * i++; 虽然复杂,但是从左依次压入操作数栈分析即可。

核心知识点:

  • =赋值运算优先级最低,最后计算;
  • =右边的从左到右加载值,依次压入操作数栈,运算顺序由运算符优先级而定
  • 自增、自减操作都是直接本地变量表中的值,不经过操作数栈。++或者--在前代表
  • =赋值之前,临时结果存储在操作数栈中
上次更新: 5/31/2023, 1:14:42 AM
最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式