这段程序大概这样:

public static void main(String[] args){

int a = 2;

System.out.println(a+++a++);

}

编译后的字节码为:

public static void main(java.lang.String[]);

descriptor: ([Ljava/lang/String;)V

flags: ACC_PUBLIC, ACC_STATIC

Code:

stack=3, locals=2, args_size=1

0: iconst_2 /*将int型2推送至栈顶*/

1: istore_1 /*将栈顶int型数值存入第二个本地变量,这里就是完成a=2的步骤*/

2: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; /*获取指定类的静态域,并将其值压入栈顶*/

5: iload_1 /*将第二个int型本地变量推送至栈顶,现在栈顶的值为a的值 2 */

6: iinc 1, 1 /*将指定int型变量增加指定值,现在a的值为3 */

9: iload_1 /*将第二个int型本地变量推送至栈顶,栈顶的值为 3 */

10: iinc 1, 1 /*将指定int型变量增加指定值,现在a为4*/

13: iadd /*将栈顶两int型数值相加并将结果压入栈顶,前面压入栈顶的值分别为2和3,所以现在栈顶的值为 5 */

14: invokevirtual #3 // Method java/io/PrintStream.println:(I)V

17: return

LineNumberTable:

line 4: 0

line 5: 2

line 6: 17

}

SourceFile: "Test.java"

现在,如果把程序换一下:

public static void main(String[] args){

int a = 2;

System.out.println(a+++(++a));

}

现在字节码为:

public static void main(java.lang.String[]);

descriptor: ([Ljava/lang/String;)V

flags: ACC_PUBLIC, ACC_STATIC

Code:

stack=3, locals=2, args_size=1

0: iconst_2

1: istore_1 /*完成a=2的赋值*/

2: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;

5: iload_1 /*a的值压入栈顶,为 2 */

6: iinc 1, 1 /*a自增长 a=3*/

9: iinc 1, 1 /*a自增长 a=4*/

12: iload_1 /*a值压入栈顶,为 4*/

13: iadd /*两值相加,为 6*/

14: invokevirtual #3 // Method java/io/PrintStream.println:(I)V

17: return

LineNumberTable:

line 4: 0

line 5: 2

line 6: 17

}

SourceFile: "Test.java"

java a%2==0_Java 初始化a=2 打印a+++a++为5相关推荐

  1. Java的赋值与初始化

    zhangleispirit@gmail.com Java的赋值和初始化包括很多容易被忽视的地方,在此分类总结如下: 1.和赋值相关: 基本类型的赋值运算需要注意的是赋值时的类型转换问题,什么时候可以 ...

  2. java中的实例初始化

    实例初始化有:实例变量初始化.实例初始化和静态初始化 1.执行顺序 下面这块代码,其执行顺序是怎么样的? public class Main {String s = "abc";p ...

  3. java类变量什么时候初始化_Java类变量的初始化时机

    先上代码 测试类public class MyNumber { public static MyNumber myNumber=new MyNumber(2.8); private static do ...

  4. java 类 加载 初始化_java中类的初始化和加载

    最近在阅读孙卫琴的java面向对象一书中,看到对java中类的初始化和加载中的论述比较系统,故笔记之 1)类的初始化,JAVA在初始化一个类时,以下步骤 A 假如类存在直接的父类,并且这个父类还没有初 ...

  5. Java静态变量的初始化

    Java静态变量的初始化 C/C++在脑海中的印象太深了,以至于一看到 static 的变量(Java中叫做:域),本能的以为它一旦初始化就不能改变了. 原来Java在还有 final . 转自:ht ...

  6. 热敏打印机 java实现根据打印机名字实现分别打印小票

    目标任务: 用两台打印机分别实现打印不容的小票 1. 实体类:商品信息 /*** 商品信息类* @author admin**/ public class Commodity {// 商品名称priv ...

  7. 初始化器 java_来说说Java中的实例初始化器

    原标题:来说说Java中的实例初始化器 (点击上方公众号,可快速关注) 英文:programcreek 译文:strongme 链接:http://www.importnew.com/12893.ht ...

  8. Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法

    Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法 下载网络上的Adobe flash cs5 精简版(绿色版),Java运行时环境初始化时出现错误,你可能需要重装Flash ...

  9. java输入一行_用java编写从标准输入读入一行字符串,打印出其中所有的数字

    用java编写从标准输入读入一行字符串,打印出其中所有的数字 关注:211  答案:1  mip版 解决时间 2021-01-13 10:00 提问者童話被染上了傷 2021-01-12 17:23 ...

最新文章

  1. 软工文档”注意注意“事项
  2. [导入]决定进入J2EE一探究竟
  3. matlab绘制X,Y二维散点图并标出序号
  4. win32中GBK、UTF8的互转
  5. 深入讲解微信小程序上传图片与JAVA后台的结合
  6. 2019ICPC(徐州) - Who is better?(中国剩余定理+斐波那契博弈)
  7. Linux学习笔记7
  8. 中考可以使用计算机吗,中考报志愿必须用电脑吗
  9. easyUI制作slider小滑块,可拖动和精确输入
  10. Swift开发之粒子动画的实现
  11. 2015/10/19总结:ajax传参、jquery.validate自定义日期校验
  12. scala写入mysql_spark rdd转dataframe 写入mysql的实例讲解
  13. 如何修改apache 2最大连接数
  14. 快速学习JasperReport-模板工具Jaspersoft Studio
  15. Warning: Procedure created with compilation errors.
  16. 关于Olly Dbg的使用报告
  17. Vue的引入方式,属性和计数器案例
  18. 网易有道的喜与忧:11亿营销费抢市场,与跟谁学之间还差一个有道
  19. AE如何制作星云粒子特效
  20. 谷歌等提出Soft Diffusion:从通用扩散过程中正确调度、学习和采样

热门文章

  1. java持续集成soapui_接口自动化测试持续集成--Soapui接口功能测试参数化
  2. 【kafka】kerberos Server not found in Kerberos database LOOKING_UP_SERVER Identifier doesn‘t match
  3. 【kafka】kafka 数据重复的一个 案例
  4. 【java】ASM代理方式 Byte-Buddy代理方式 Javassist代理方式
  5. 【Kafka】消息超过最大值限制max.request.size
  6. Mac : PS1变量不生效了
  7. 【Flink】分布式快照算法—— Chandy-Lamport 算法
  8. hive元数据为什么要用mysql_Hive用MySQL做元数据保存的数据库时,mySQL设置
  9. RocketMQ入门到入土(二)事务消息顺序消息
  10. struts2如何使用拦截器进行用户权限控制