Gen对于break、continue与return的处理
2024-09-11 16:18:22
void tryItOut () {} void wrapItUp () {} void tryFinally() { for (int i = 0; i < 2; i++) { try { tryItOut(); } finally { wrapItUp(); return; } } }
生成的class文件的内容如下:
void tryFinally(); flags: Code: stack=2, locals=3, args_size=1 0: iconst_0 // 将0压入栈顶 1: istore_1 // 将0存入本地变量表1的位置 2: iload_1 3: iconst_2 4: if_icmpge 22 // 进入try的body体 7: aload_0 8: invokevirtual #2 // Method tryItOut:()V // 进入finally的body体 11: aload_0 12: invokevirtual #3 // Method wrapItUp:()V 15: return 16: astore_2 // 将throwable异常存储到本地变量表2的位置 17: aload_0 18: invokevirtual #3 // Method wrapItUp:()V 21: return 22: return Exception table: from to target type 7 11 16 any 16 17 16 any
public void t(boolean a, int b) { E: { while (a) { if (b == 1) { continue; } if (b == 2) { break; } if (b == 3) { break E; } } int c=2; } }
class文件内容如下:
public void t(boolean, int); flags: ACC_PUBLIC Code: stack=2, locals=4, args_size=3 0: iload_1 1: ifeq 28 // 当栈顶int型数值等于0 时跳转 // continue的处理 4: iload_2 // 将形式参数变量b压入栈顶 5: iconst_1 // 将常量1压入栈顶 6: if_icmpne 12 // 比较栈顶两int型数值,当且仅当不相等时结果为真,为真后跳转到12 9: goto 0 // break的处理 12: iload_2 13: iconst_2 14: if_icmpne 20 17: goto 28 // break的处理 20: iload_2 21: iconst_3 22: if_icmpne 0 25: goto 30 28: iconst_2 29: istore_3 30: return
本地变量表的内容如下:
0:this
1:方法形式参数a
2:方法形式参数b
最新文章
- AndroidStudio快捷键
- OOM异常产生的原因和处理方法
- 【转】SQL 操作类
- Visual Studio 2010配置Opencv2.4.9
- (翻译)初学者的object-C指南
- [LeetCode]题解(python):088 Merge Sorted Array
- 如何使用编辑模板在ASPxGridView中进行新增修改(除去常规的gridviw模板编辑外)
- ajax与jsonp的区别
- [转]内嵌WORD/OFFICE的WINFORM程序——DSOFRAMER使用小结
- UIActionViewController 详解 iOS8
- YII 主题
- CVE-2015-0057 POC构造 &; 利用分析(2015.7)
- IOS真机Profile时调用树中的对象只是显示地址,没有显示symbol name
- js金钱转大写
- selenium webdriver 的环境搭建时注意事项
- CDN及CDN加速原理
- linux 相关( 随时更新)
- 细说flush、ob_flush的区别
- 启动MyEclipse8.5时未响应
- idea最常使用的快捷键
热门文章
- WordPress-Word图片上传插件整合教程-Xproer.WordPaster
- SED单行脚本快速参考(Unix 流编辑器)
- bzoj2893(费用流)
- linux初学terminal命令(1)ls、cd、su、man、pwd、useradd、passwd、cat、Ctrl+C、Ctrl+Z、Ctrl+L
- 第70讲:Scala界面GUI编程实战详解
- kafka_shell操作
- 区间DP POJ1160村庄邮局问题
- [javascript]Three parts of javascript code snippet
- 11i - 12 Gather Schema Statistics fails with Ora-20001 errors after 11G database Upgrade (文档 ID 781813.1)
- [Proposal]Nano-Diary(纳日记)