第一季: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 段落

相关文章
|
3天前
|
存储 Java 开发者
Java 里的“变形金刚”:变量与常量的前世今生!
【6月更文挑战第14天】Java 中的变量和常量是编程基础,变量是可变的容器,用于存储不同类型的数据,如示例中的 `age`;常量(如 `MAX_VALUE`)是固定不变的值,用 `final` 定义。理解两者及其作用至关重要,它们确保程序的稳定性和准确性。在实际编程中,合理使用变量和常量可以提高代码可读性和可维护性。它们是构建程序的基础,对新手和资深开发者都极其重要。
|
3天前
|
存储 小程序 Java
打破传统,Java 变量与常量让你重新认识编程的魅力!
【6月更文挑战第14天】Java编程中的变量与常量赋予程序灵活性和动态性。变量如魔法盒子,其值可变,提供程序的适应性;常量则如灯塔,值恒定,确保稳定性。两者结合构建复杂程序,变量用于处理数据,常量定义规则。在项目中,规范管理变量和常量能提升代码可读性和维护性。无论是小游戏还是复杂系统,它们都是不可或缺的工具,激发编程的无限可能。
|
4天前
|
存储 Java 程序员
揭秘 Java 世界:从“小白”到“大神”,变量与常量的奇妙之旅!
【6月更文挑战第14天】Java编程基础中,变量与常量是构建程序的关键。变量像可变的盒子,存储变化的数据,如`int age = 25;`。常量(如`final double PI = 3.14159;`)是不可变值,用`final`定义。通过示例展示了变量可修改,常量不可改的特性。理解并熟练运用它们对于编程至关重要,伴随程序员从初学到精通的全过程。
|
3天前
|
存储 Java
Java 新手进阶:从变量到常量,一步步走向编程巅峰!
【6月更文挑战第14天】Java新手应掌握变量与常量,它们是编程基础。通过示例展示变量(如矩形的长度和宽度)用于存储可变数据,常量(如重力加速度)用于表示固定值。理解不同类型的变量,如字符串、整型和浮点型,并用`final`关键字定义常量。在银行账户管理程序案例中,变量跟踪账户信息,常量表示年利率。熟悉这些概念将提升编程技能。
|
3天前
|
存储 Java
Java 变量与常量:深入浅出,一探究竟!
【6月更文挑战第14天】Java编程中的变量和常量是程序基础。变量是可变的数据存储,如`int num = 10;`,类型包括整型、浮点型等。常量(如`final double PI = 3.14159;`)值不可变。变量用于存储和处理数据,如计算平均分;常量常用于定义固定值,如颜色或π。理解和熟练使用变量与常量是编程的关键。
|
3天前
|
存储 Java 容器
那些年,我们一起学过的 Java 变量与常量
【6月更文挑战第14天】Java学习中,变量和常量至关重要。变量如灵活容器,存储各类数据,示例:`int number = 10; number = 20;`。常量如圆周率`PI`,定义后不可变。Java有整型、浮点型、字符型、字符串型等变量和常量。合理使用能提升代码规范性和可读性,命名规范至关重要。变量和常量是编程基础,影响深远,共同构建稳定系统。
|
3天前
|
Java
Java 基础深度解析:变量与常量的声明、赋值与初始化的权威指南
【6月更文挑战第14天】Java编程中的变量和常量是基础关键。声明变量如`int age;`,赋值与初始化可在声明时或后续代码中完成。常量用`final`修饰,如`public static final double PI = 3.14159;`,且只能赋值一次。变量命名应具描述性,常量值设定后尽量不变,注重代码的可读性和可维护性。熟练掌握这些将有助于编写高质量Java程序。
|
3天前
|
存储 Java 开发者
在 Java 的星辰大海中,寻找变量与常量的那份执着与坚守。
【6月更文挑战第14天】Java 中的变量与常量各有特色。变量如善变的艺术家,值可随程序需求变化,适于存储动态数据;而常量如同坚定不移的灯塔,值恒定不变,为程序提供稳定参照。变量用于处理复杂情况,常量定义固定规则。两者在内存管理和编程风格上各有作用,共同构建程序并确保其正确性与稳定性。理解并巧妙运用它们的差异,能提升 Java 编程的效率和质量,探索编程的无限可能。
|
3天前
|
存储 Java
变量?常量?Java 里的这对“欢喜冤家”!
【6月更文挑战第14天】Java编程中,变量和常量是关键元素。变量用于存储不同类型的数据,如`int`、`double`、`char`,需赋予有意义的名称并注意作用域。常量用`final`修饰,保持值不变,命名通常全大写。善用常量提升代码可维护性,如配置参数。在复杂数据结构场景下,合理使用两者使代码更简洁高效。遵循最佳实践,灵活运用变量和常量,将使代码更规范、易读、高效,为程序开发增添价值。
|
4天前
|
存储 Java 容器
Java 新手必看:变量与常量,你的编程启蒙导师!
【6月更文挑战第14天】Java编程入门涉及关键概念:变量和常量。变量如可变容器,存储不同值,如示例中的体重变化。常量如`final`定义的`PI`,值固定不变。理解并恰当使用两者对新手至关重要,它们构成编程基础,助力构建灵活且稳定的程序。在学习旅程中,与变量和常量同行,不断进步。