美文网首页
局部变量&操作数栈面试题

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

作者: ChadJ | 来源:发表于2020-08-13 09:53 被阅读0次

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

总结

  • 赋值最后计算
  • =右边从左到右加载依此压入操作数栈
  • 实际运算看运算符优先级
  • 自增、自减直接修改局部变量到值,不经过操作数栈
  • 最后赋值之前,临时结果也是存储在操作数栈中

相关文章

  • 【JVM】1.1、局部变量表与操作数栈

    局部变量表Slot重用与GC 操作数栈 局部变量表与操作数栈加法案例 局部变量表 大小固定,局部变量表是一组变量值...

  • 字节码图解代码

    输出是:200 在这里主要用到的就是 操作数栈和局部变量表 数值之间的来回倒腾。 ①从操作数栈 到 局部变量表 是...

  • 2,java虚拟机-栈

    栈帧由三部分组成:局部变量区、操作数栈、帧数据区。局部变量区和操作数栈的大小要视对应的方法而定,他们是按字长计...

  • jvm(四)虚拟机栈

    内容 概述 运行时栈帧结构 局部变量表 操作数栈 操作数栈字节码指令执行分析 栈顶缓存技术 动态链接 方法返回地址...

  • 出栈装入局部变量表指令

    出栈装入局部变量表指令用于将操作数栈中栈顶元素弹出后,装入局部变量表的指定位置,用于给局部变量赋值。 这类指令主要...

  • 简单指令解析

    参考资料:怎么理解JVM中的iload和istore指令 栈:包括局部变量表,操作数栈,动态链接,方法出口等操作数...

  • 加载与存储指令概述

    1、作用 加载和存储指令用于将数据从栈帧的局部变量表和操作数栈之间来回传递。 2、常用指令 1、【局部变量压栈指令...

  • JVM

    组成部分 方法区 Java 堆 Java 栈 局部变量表 用于报错函数的参数与局部变量 操作数栈 主要保存计算过程...

  • 局部变量压栈指令

    局部变量压栈指令将给定的局部变量表中的数据压入操作数栈。 这类指令大体可以分为: xload_(x为i、l、...

  • 局部变量+操作数栈举例

    举例:代码 反编译 执行流程1、一开始局部变量表和操作数栈都是空的 2、执行bipush 10,将10压入操作数栈...

网友评论

      本文标题:局部变量&操作数栈面试题

      本文链接:https://www.haomeiwen.com/subject/puqbdktx.html