第一季:1自增变量【Java面试题】

简介: 第一季:1自增变量【Java面试题】

前言


2022 9/29 22:39

路漫漫其修远兮,吾将上下而求索


本文是根据尚硅谷学习所做笔记

仅供学习交流使用,转载注明出处

推荐

【尚硅谷经典Java面试题第一季(java面试精讲)-哔哩哔哩】

尚硅谷经典Java面试题一二三季

尚硅谷经典Java面试题(第1季)

第一季:1自增变量

题目

如下代码的运行结果︰

   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

分析

public class Test1 {
    public static void main(String[]args){
        int i = 1;
        i = i++;
        // ①把i的值1压入操作数栈1
        // ②i变量自增1(在局部变量表中为2)
        // ③把操作数栈的值1赋给i为1
        // 对应0-6
        int j = i++;
        // ①把i的值1压入操作数栈1
        // ②i变量自增1(在局部变量表中为2)
        // ③把操作数栈的值1赋给j为2
        // 最后i更新为2
        // 对应7-11
        int k = i+ ++i* i++;//i=4 k=2+3*3
        // ①把i的值2压入操作数栈为2
        // ②i变量自增1(在局部变量表中为3)
        // ③把i的值3压入操作数栈为3
        // ④把i的值3压入操作数栈为3
        // ⑤i变量自增1(在局部变量表中为4)
        // ⑥把操作数栈中前两个(3,3,2)弹出来求乘积再压入栈(9,2)
        // ⑦把操作数栈的值(9,2)弹出求和再赋给k为12
        // 最后i更新为4
        // 对应12-23
        System.out.println("i="+i);//4
        System.out.println("j="+j);//2
        System.out.println("k="+k);//11
    }
}

字节码文件



小结

  • 赋值=,最后计算
  • =右边的从左到右加载值依次压入操作数栈
  • 实际先算哪个,看运算符优先级
  • 自增、自减操作都是直接修改变量的值,不经过操作数栈
  • 最后的赋值之前,临时结果也是存储在操作数栈中
  • 建议: 《JVM虚拟机规范》关于指令的部分

最后


2022 9/29 22:57


p1


Markdown 1295 字数 107 行数

HTML 979 字数 67 段落

相关文章
|
4天前
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
1天前
|
Java 开发者
Java变量命名的规则
Java变量命名的规则
|
4天前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
4天前
|
设计模式 开发框架 Java
java设计模式面试题大全含答案
java设计模式面试题大全含答案
|
4天前
|
设计模式 SQL JavaScript
java面试宝典全套含答案
java面试宝典全套含答案
|
4天前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018
|
4天前
|
缓存 安全 Java
Java线程面试题含答案
Java线程面试题含答案
|
4天前
|
存储 设计模式 Java
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
|
4天前
|
SQL 算法 安全
java面试宝典_java基础面试_2018java面试题_2019java最新面试题
java面试宝典_java基础面试_2018java面试题_2019java最新面试题
|
4天前
|
算法 安全 网络协议
java高级面试题_java面试题大全带答案_线程面试题_java面试宝典2019
java高级面试题_java面试题大全带答案_线程面试题_java面试宝典2019