189 8069 5689

在Java中使用i++时需要注意哪些问题-创新互联

本篇文章为大家展示了在Java中使用i++时需要注意哪些问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、古丈网络推广、微信小程序定制开发、古丈网络营销、古丈企业策划、古丈品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联公司为所有大学生创业者提供古丈建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

字节码


  • Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令。
  • 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的结构,所以大多数的指令都不包含操作数,只有一个操作码。

局部变量表

局部变量表:Local Variables,被称之为局部变量数组或本地变量表

定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress类型。

由于局部变量表是建立在线程的栈上,是线程的私有数据,因此不存在数据安全问题。

局部变量表所需的容量大小是在编译期确定下来的,并保存在方法的Code属性的maximum local variables数据项中。在方法运行期间是不会改变局部变量表的大小的。

操作数栈

操作数栈:Operand Stack ,使用数组实现的。

每一个独立的栈帧除了包含局部变量表以外,还包含一个后进先出(Last - In - First -Out)的 操作数栈,也可以称之为 表达式栈(Expression Stack)

操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取数据,即入栈(push)和 出栈(pop)

  • 某些字节码指令将值压入操作数栈,其余的字节码指令将操作数取出栈。使用它们后再把结果压入栈
  • 比如:执行复制、交换、求和等操作
  • 操作数栈,主要用于保存计算过程的中间结果,同时作为计算过程中变量临时的存储空间。

接下来就是本文的正式内容,首先,我们先给出两个结论:

  • i++与++i在不同情况下可能会有不同的结论;
  • 实例变量/类变量的i++并不是一个原子性的操作。

首先我们看一下i++与++i的解析:

当i++或者++i没有涉及到其他操作时,两者是没有区别的。

// i++
public void method1(){
 int i = 10;
 i++;
}
// ++i
public void method2(){
 int i = 10;
 ++i;
}

新闻名称:在Java中使用i++时需要注意哪些问题-创新互联
分享路径:http://jkwzsj.com/article/deihjg.html

其他资讯