问题:

   public static void main(String[] args) throws InterruptedException {int i = 0;i = i++;System.out.println(i);}

输出内容为0

这是一个在JAVA语言层面无法解决的问题。 必须了解字节码的执行过程才能理解输出结果。

本文属于 茴香豆的有几种写法的研究。 只是为了说明有些问题JAVA语言层面无法解决。可以深入到字节码理解

字节码分析

public static void main(java.lang.String[]) throws java.lang.InterruptedException;descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=2, args_size=10: iconst_0  // 常量0 压入操作数栈(0)1: istore_1  // 操作数栈(0) 的值 存到局部变量表(1)2: iload_1   // 局部变量表(1)的值压入 操作数栈(0) 3: iinc          1, 1 // 将局部变量表(1) 的值 加 16: istore_1   // 操作数栈(0) 的值 存到局部变量表(1)7: getstatic     #2    // java/lang/System.out 对象压入栈顶10: iload_1             // 局部变量表(1)的值压入 压入栈顶11: invokevirtual #3    // 执行 System.out.println14: return
局部变量表(0) 局部变量表(1) 操作数栈(0) 操作数栈(1) 说明
args 0
args 0
args 0 0
args 1 0 (iinc 指令 将局部变量表的值+1)
args 0 0 istore_1 将 操作数栈顶(0)的值覆盖局部变量表(1)
args 0 System.out
args 0 System.out 0
执行System.out.println(0)

Java-茴香豆研究(一)相关推荐

  1. Java反射研究(2)

    接Java反射研究(1) 九.调用特定方法 Method m = c1.getMethod("funcname",Class<?>...c);   //funcname ...

  2. JAVA音频研究5:音频播放器(javax.sound学习指南,javax.sound学习实战)

    本代码将调用javax.sound库,讲解如何播放音频 得到能够使用的简易音频的播放器 本文可作为javax.sound学习指南,javax.sound学习实战等进行参考 相关内容请看下方代码与注释 ...

  3. JAVA深入研究——Method的Invoke方法。

    在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java ...

  4. java缓存研究_JAVA缓存研究之剖析Jive的缓存机制内容是什么呢?

    Jive是一个广受欢迎的开放源码的论坛项目,虽然推出了很多年,但至今很多Java程序员还对它津津乐道.从框架结构上看,它采用了很多设计模式,如Factory模式.Proxy模式.Decorator模式 ...

  5. Java容器类研究4:ArrayList

    java.util.ArrayList ArrayList继承自AbstractList,AbstractList为随机访问数据的结构,如数组提供了基本实现,并且提供了Iterator.首先看Abst ...

  6. Java深入研究_Java深入研究【1、object类】

    一.概述 Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 参考英文: * Class {@code Object} is the ...

  7. Java Stub 研究学习(2)

    知识点小结: 在本次练习中重点关注的是当测试代码中出现需要打桩的方法包含不同参数内容(1个参数)时的灵活打桩处理. 如代码中提到的file.compareTo(String name)方法,其中nam ...

  8. 【Java深入研究】9、HashMap源码解析(jdk 1.8)

    一.HashMap概述 HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现.与HashTable主要区别为不支持同步和允许null作为key和value.由于HashMap不是线程 ...

  9. 【Java深入研究】10、红黑树

    一.红黑树介绍 红黑树是二叉查找树,红黑树的时间复杂度为: O(lgn) 红黑树的特性: (1)每个节点或者是黑色,或者是红色. (2)根节点是黑色. (3)每个叶子节点(NIL)是黑色. [注意:这 ...

  10. Java深入研究_Java底层深入研究(一)

    关于Java 的底层一直想写点什么,但是好像很多问题在网上还是可以找得到答案,最后还是决定写出来,一来可以让自己重温一下,二来可以和大家一起深入探讨底层的知识.这里面还有一些常见的小问题,也附带在里面 ...

最新文章

  1. 查看suse系统版本
  2. Python科学计算之Pandas基础学习
  3. 【MM模块】RFQ 采购询价单
  4. 神策数据产品演进及行业延展实践
  5. Mysql错误1366 - Incorrect integer value解决方法
  6. base cap 分布式_高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
  7. 322. 零钱兑换 golang 动态规划
  8. 攻克前端开发的难点,码农不惧!!
  9. 天池学习赛:工业蒸汽量预测5——特征优化
  10. [Swustoj 24] Max Area
  11. Entity Framework 代码先行之约定配置
  12. app抓包工具_【旧版IPA抓包教程2】超便捷苹果旧版本APP抓包/轻松抓取你想要的版本,旧版app任意下载...
  13. select weui 动态加载数据_jQuery WeUI 组件下拉刷新和滚动加载的实现
  14. FOXIT PDF EDITOR工具分割PDF
  15. Ubuntu查看有线网卡eth0和eth1分别对应网卡型号
  16. B站UP主稚晖君自制机械臂给葡萄做缝合手术,工业制造趋于智能化
  17. 学python编程从入门到实践方法-python自学Day07(自学书籍python编程从入门到实践)...
  18. RFID危化品管理系统解决方案
  19. 在项目中使用Liquibase
  20. 请求接口参数正确请求失败的问题

热门文章

  1. matlab加载xls文件报错,服务器出现意外情况,远程过程调用失败
  2. Node-RED中建立Websocket客户端连接
  3. SuperMap基本概念
  4. 使用js打印日历在控制台
  5. 微信小程序 展示地图指定位置导航
  6. 433 490 868 915Mhz lora频段贴片天线方案 CA-S01 CrossAir贴片天线
  7. Beta周王者荣耀交流协会第一次Scrum会议
  8. 计算机语言窗口如何归位,右下角时间语言电脑图标跑到左边去了如何还原
  9. 关闭微软cortana
  10. gromacs ngmx_gromacs示例