java sipush_003-整型入栈指令(iconst、bipush、sipush、ldc)
一、概述
二、前言
当int类型
取值-1~5采用iconst指令
取值-128~127采用bipush指令
取值-32768~32767采用sipush指令
取值-2147483648~2147483647采用 ldc 指令。
2.1、iconst指令
当int取值-1~5时,JVM采用iconst指令将常量压入栈中。
public static voidmain(String[] args) {int i = 5;int j = -1;
}
查看class文件
public static voidmain(java.lang.String[]);
Code:0: iconst_51: istore_12: iconst_m13: istore_24: return
分析class文件,int取值0~5时JVM采用iconst_0、iconst_1、iconst_2、iconst_3、iconst_4、iconst_5指令将常量压入栈中,取值-1时采用iconst_m1指令将常量压入栈中。
2.2、bipush
当int取值-128~127时,JVM采用bipush指令将常量压入栈中。
public static voidmain(String[] args) {int i = 127;
}
查看class文件
public static voidmain(java.lang.String[]);
Code:0: bipush 127
2: istore_13: return
2.3、sipush
当int取值-32768~32767时,JVM采用sipush指令将常量压入栈中。
public static voidmain(String[] args) {int i = 32767;
}
查看class文件
public static voidmain(java.lang.String[]);
Code:0: sipush 32767
3: istore_14: return
2.4、ldc
当int取值-2147483648~2147483647时,JVM采用ldc指令将常量压入栈中。
public static voidmain(String[] args) {int i =Integer.MAX_VALUE;
}
查看class
public static voidmain(java.lang.String[]);
Code:0: ldc #3 //int 2147483647
2: istore_13: return
采用ldc指令将2147483647常量压入栈中,需要注意的是ldc指令是从常量池中获取值的,也就是说在这段范围(-2147483648~2147483647)内的int值是存储在常量池中的。
java sipush_003-整型入栈指令(iconst、bipush、sipush、ldc)相关推荐
- JVM字节码之整型入栈指令(iconst、bipush、sipush、ldc)
官网:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html 原文地址:http://www.linmuxi.com/2016/02 ...
- 深入理解Java的整型类型:如何实现2+2=5?
先看下这段神奇的Java代码: public static void main(String[] args) throws Exception {doSomethingMagic();System.o ...
- [小技巧][JAVA][转换]整型int与字符char相互转换
借助String.valueOf()过渡 char -> String ->int char c; String str = String.valueOf(c); int i = Inte ...
- java中将整型转换为字符型_JAVA的整型与字符串相互转换
JAVA的整型与字符串相互转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Int ...
- java长整型时间转日期_C#长整型时间与java长整型时间转换
最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...
- java 取整型的低八位_Java 基础(十五)并发工具包 concurrent
本文目录: java.util.concurrent - Java 并发包简介 阻塞队列 BlockingQueue 数组阻塞队列 ArrayBlockingQueue 延迟队列 DelayQueue ...
- Java中整型的缓存机制
本文将介绍Java中Integer的缓存相关知识.这是在Java 5中引入的一个有助于节省内存.提高性能的功能.首先看一个使用Integer的示例代码,从中学习其缓存行为.接着我们将为什么这么实现以及 ...
- java短整型_JAVA个基本数据类型
Java有8大基本数据类型,分别是: 1).字节类型:byte Byte数据类型是8位 取值范围:(-128 - 127) 默认值:0 byte a= 100; byte b = -20; 2).短整 ...
- java短整型_Java的基本数据类型
变量就是用来储存值而保留的内存位置.这就意味着当创建一个变量时就会在内存中占用一定的空间. 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中.因此,通过给变量分配不同的数据类 ...
最新文章
- 美多商城之订单(结算订单)
- mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...
- mongodb $ifNull
- 错误:子进程 已安装 pre-removal 脚本 返回了错误号 1
- Python3bytes、hex、字符串之间相互转换
- 智慧城市、智慧园区、智慧交通、行业经营看板、运行管理大屏、图表模板、公司经营看板、大屏可视化、BI可视化模板、智慧工厂、办公、能源、餐饮、校园、人力资源、行政、汽车、房地产、保险、医院、axure原型
- 3D计算机组装,3DMax电脑组装配置
- linux能安装cad快速看图不,cad快速看图(三种方法教你快速查看CAD图纸)
- 双线性插值(超级易懂的)
- python安装旧版本、python历史版本下载
- android回溯机制,Android事件分发机制全面解析
- Python解析CDD文件
- Python 调用高德 API 实现地址转为经纬度
- 如何使用xposed强制开启android webview debug模式
- CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)
- 提示:The word is not correctly spelled 解决方法
- 【2020年高被引学者】 杨笛一 佐治亚理工大学
- vue 项目, 父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)
- 华为 watch fit 鸿蒙,华为新款智能手表 Watch Fit 曝光,矩形表盘,支持近 100 种运动模式...
- python绘制七巧板_CSS3制作七巧板动画