Java虚拟机提供几种进行整数算术运算的操作码,他们执行基于int和long类型的运算。当byte、short和char类型值参与算术运算时,首先会将它们转换为int类型。这些操作码都不会抛出异常,溢出在这里通常可以被忽略。

整数加法

操作码

操作数

说明

iadd

(无)

从栈中弹出两个int类型数,相加,然后将所得int类型结果压回栈

ladd

(无)

从栈中弹出两个long类型数,相加,然后将所得long类型结果压回栈

将一个常量与局部变量相加

操作码

操作数

说明

iinc

vindex,const

把常量与一个位于vindex位置的int类型局部变量相加

wide

iinc,index,const

把常量与一个位于vindex位置的int类型局部变量相加

iinc可以用来给局部变量赋值-128~127之间的值。这条操作码与用于控制循环执行的变量的加减相比,效率更高。加上wide可以用来把常量的范围增大到-32768~32767。

整数减法

操作码

操作数

说明

isub

(无)

从栈中弹出两个int类型数,相减,然后将所得int类型结果压回栈

lsub

(无)

从栈中弹出两个long类型数,相减,然后将所得long类型结果压回栈

从栈顶弹出两个数,顶端的充当减数,次顶端的充当被减数。

整数乘法

操作码

操作数

说明

imul

(无)

从栈中弹出两个int类型数,相乘,然后将所得int类型结果压回栈

lmul

(无)

从栈中弹出两个long类型数,相乘,然后将所得long类型结果压回栈

整数除法

操作码

操作数

说明

idiv

(无)

从栈中弹出两个int类型数,相除,然后将所得int类型结果压回栈

ldiv

(无)

从栈中弹出两个long类型数,相除,然后将所得long类型结果压回栈

从栈顶弹出两个数,次顶端的数除以顶端的数(首先被压入栈的数作为被除数或者分子,其次被压入的数作为除数或者分母)。如果整数被0除,会抛出ArithmeticException异常。

整数取余

操作码

操作数

说明

irem

(无)

从栈中弹出两个int类型数,相减,然后将所得int类型余数压回栈

lrem

(无)

从栈中弹出两个long类型数,相减,然后将所得long类型余数压回栈

如果整数被0除,会抛出ArithmeticException异常。

操作码

操作数

说明

ineg

(无)

从栈中弹出两个int类型数,取反,然后将所得int类型结果压回栈

lneg

(无)

从栈中弹出两个long类型数,取反,然后将所得long类型结果压回栈

《深入Java虚拟机学习笔记》- 第12章 整数运算的更多相关文章

  1. 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回

    <深入Java虚拟机学习笔记>- 第19章 方法的调用与返回

  2. 《深入Java虚拟机学习笔记》- 第16章 控制流

    <深入Java虚拟机学习笔记>- 第16章 控制流

  3. 《深入Java虚拟机学习笔记》- 第17章 异常

    <深入Java虚拟机学习笔记>- 第17章 异常

  4. 《深入Java虚拟机学习笔记》- 第13章 逻辑运算

    <深入Java虚拟机学习笔记>- 第13章 浮点运算

  5. 《深入Java虚拟机学习笔记》- 第14章 浮点运算

    <深入Java虚拟机学习笔记>- 第13章 浮点运算

  6. 《深入Java虚拟机学习笔记》- 第8章 连接模型

    Java虚拟机学习笔记(八)连接模型

  7. 《深入Java虚拟机学习笔记》- 第4章 网络移动性

    Java虚拟机学习笔记(四)网络移动性

  8. 《深入Java虚拟机学习笔记》- 第2章 平台无关

    Java虚拟机学习笔记(二)平台无关

  9. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  10. Java虚拟机学习笔记——JVM垃圾回收机制

    Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...

随机推荐

  1. O2O模式

    O2O即Online To Offline(在线离线/线上到线下) 是指将线下的商务机会与互联网结合,让互联网成为线下交易的前台,这个概念最早来源于美国.O2O的概念非常广 泛,既可涉及到线上,又可涉 ...

  2. 4.0 spring-注册解析的Bean

    1.0 registerBeanDefinition 对于配置文件,解析也解析完了,装饰也装饰完了,对于得到的BeanDefinition已经可以满足后续的使用了,唯一剩下的工作就是注册了, 也就是: ...

  3. Matlab中添加搜索目录

    一.问题来源 来自于一份大规模hash图像检索代码. 二.问题解析 2.1 添加目录 addpath('./utils/'); 2.2 添加目录及其子目录 addpath(genpath('./uti ...

  4. 【转载】test和cmp比较

    标 题:test和cmp一个很菜很基础的话题! 作 者: FTBirthday 时 间:2003/05/19 01:14am 链 接:http://bbs.pediy.com 看过破解教程,都知道te ...

  5. unity3d与eclipse集成开发android应用

    原地址:http://blog.csdn.net/armoonwei/article/details/7032537 Unity as a Library Once you have eclipse ...

  6. hdu 4664 Triangulation 博弈论

    看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数…… 现在在来做这题就很容易了,1A 打表容易发现在80左右的时候就出现循环节了 代码如下: #include ...

  7. 落叶枫桥LOGO

    LOGO

  8. POJ2240——Arbitrage(Floyd算法变形)

    Arbitrage DescriptionArbitrage is the use of discrepancies in currency exchange rates to transform o ...

  9. Android EditView 阻止软键盘自动弹出

    最近再做一个查询内的小应用,界面最上面是一个EditText查询框,进行Activity后,总会弹起软键盘.这样就挡住了查询框下面的其他查询条件 控件,感觉很不友好.所以现在要做的就是在进入Activ ...

  10. 使用PHP抓取网站ico图标

    网站许久没用更新,以后会经常更新,本次分享一个使用PHP抓取网站ico的程序,提供一个网站列表后对网站的ico进行下载抓取,具体代码如下: <?php /** * 更新热站ico * gao 2 ...