《深入Java虚拟机学习笔记》- 第12章 整数运算
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章 整数运算的更多相关文章
- 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回
<深入Java虚拟机学习笔记>- 第19章 方法的调用与返回
- 《深入Java虚拟机学习笔记》- 第16章 控制流
<深入Java虚拟机学习笔记>- 第16章 控制流
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
- 《深入Java虚拟机学习笔记》- 第13章 逻辑运算
<深入Java虚拟机学习笔记>- 第13章 浮点运算
- 《深入Java虚拟机学习笔记》- 第14章 浮点运算
<深入Java虚拟机学习笔记>- 第13章 浮点运算
- 《深入Java虚拟机学习笔记》- 第8章 连接模型
Java虚拟机学习笔记(八)连接模型
- 《深入Java虚拟机学习笔记》- 第4章 网络移动性
Java虚拟机学习笔记(四)网络移动性
- 《深入Java虚拟机学习笔记》- 第2章 平台无关
Java虚拟机学习笔记(二)平台无关
- java JDK8 学习笔记——第16章 整合数据库
第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...
- Java虚拟机学习笔记——JVM垃圾回收机制
Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...
随机推荐
- Spring的配置文件
Web.xml将会配置Spring的配置文件位置: <servlet> <servlet-name>x</servlet-name> & ...
- 关于HTML Input
定义:<input> 标签用于搜集用户信息.Input表示Form表单中的一种输入对象. 根据不同的 type 属性值,输入字段拥有很多种形式.输入字段可以是文本字段.复选框(单/复选框) ...
- VB逆向
大家或许有所察觉了,随着我们课程的不断深入学习,我们感觉自身逆向的“内功”也在不断的增进! 我们从爆破入手,到现在逐步大家进入程序的内部,认识不同编译器开发的程序,探索不同的加密逻辑. 前边,我们的例 ...
- [BEC][hujiang] Lesson02 Unit1:Working life ---Reading
2 1.1Working Life p7 reading attitudes to work Question6: 对于Attitude问题 1 I be willing/ unwilling to ...
- 进阶:使用 EntityManager
JPA中要对数据库进行操作前,必须先取得EntityManager实例,这有点类似JDBC在对数据库操作之前,必须先取得Connection实例,EntityManager是JPA操作的基础,它不是设 ...
- JSON用法简介
[JSON简介] jsoncpp 主要包含三种类型的 class:Value.Reader.Writer.jsoncpp 中所有对象.类名都在 namespace Json 中,包含 json.h 即 ...
- linux Ubuntu12 设置root用户登录图形界面
Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录.以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端 ...
- hbase命令备忘
http://www.cnblogs.com/linjiqin/archive/2013/03/08/2949339.html HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase ...
- c缺陷与陷阱笔记-第六章 预处理器
1.这一章貌似有个小错误,开始时定义 #define f (x) ((x)-1),然后f(x)代表什么,书上说是(x) ((x)-1),应该是 (x) ((x)-1)(x) 2.关于宏定义中参数的2次 ...
- 前阿里CEO卫哲谈阿里创业经验:如何找人、找钱、找方向?(不同的阶段分别有:时间优先、金额优先、比例优先,不要做平台,太难)
新浪科技李根 整理报道 卫哲现在是御嘉基金的创始合伙人,他另一个更加知名的身份是阿里巴巴(B2B)前CEO,在2006年到2011年的时间里,卫哲见证了阿里巴巴如何利用人才.资本和方向选择一路壮大. ...