Gen对于break、continue与return的处理
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
Gen对于break、continue与return的处理的更多相关文章
- js中退出语句break,continue和return 比较 (转载)
在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...
- js中退出语句break,continue和return 比较
js中退出语句break,continue和return 比较 在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是 ...
- JS中break continue和return的用法?
在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 break和continue: 退出循环 ...
- js中退出语句break,continue和return 比较(转)
原链接:http://blog.163.com/ued_er/blog/static/199703159201210283107315/ js中退出语句break,continue和return 比较 ...
- js中的break,continue和return到底怎么用?
为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...
- [转帖]Shell脚本中的break continue exit return
Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 cont ...
- 【疑点】js中的break,continue和return到底怎么用?
转: [疑点]js中的break,continue和return到底怎么用? 为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在 ...
- js中退出语句break,continue和return 比较 (转)
在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...
- js中的break,continue和return的用法及区别
为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...
- break continue exit return 的区别
[root@localhost day1]# cat ss.sh #!/bin/bash for ((i=0;i<5;i++)) do if [ $i -eq 3 ] then break #c ...
随机推荐
- jvm的内存分配
java内存分配 A:栈 存储局部变量 B:堆 存储所有new出来的 C:方法区(方法区的内存中) 类加载时 方法信息保存在一块称为方法区的内存中, 并不随你创建对象而随对象保存于堆中; D:本地方法 ...
- php获取跳转后的真实链接
网站的跳转链接经常为本站链接加上一些参数来跳转,如何使用php获取跳转后的链接呢? php代码如下: <?php // echo get_redirect_url('http://www.osc ...
- POJ3046--Ant Counting(动态规划)
Bessie was poking around the ant hill one day watching the ants march to and fro while gathering foo ...
- 转载:$(function() {}),即$(document).ready(function(),什么时候执行?以此为准,真理
转载:https://blog.csdn.net/Ideality_hunter/article/details/77935656 $(function() { //执行操作 }); $(functi ...
- poj 2488 A Knight's Journey
题目 题意:给出一个国际棋盘的大小 p*q,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. 因为要求字典序输出最小,所以按下图是搜索的次序搜素出来的就是最小的. 初始方向数组:i ...
- hadoop两大核心之一:MapReduce总结
MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,MapReduce程序 本质上是并行运行的,因此可以解决海量数据的计算问题. MapReduce任务过程被分为两个处理阶段 ...
- hdu 2227
和之前的hdu3030都快一样了 可以参考之前的题解 #include <iostream> #include <cstdio> #include <cstdlib> ...
- 2-Sat小结
关于2-sat,其实就是一些对于每个问题只有两种解,一般会给出问题间的关系,比如and,or,not等关系,判定是否存在解的问题.. 具体看http://blog.csdn.net/jarjingx/ ...
- ASP.NET实现头像剪切保存
利用swfupload上传头像,利用Jcrop来实现头像在线选择,然后提交个ashx对原头像进行剪切.代码如下: default.aspx: <%@ Page Language="C# ...
- linux下java版本管理工具jenv使用介绍
不同的项目使用的java版本不同,每次切换时都需要手动去修改java的环境变量,麻烦至极. jenv可以管理java版本,轻松实现管理多个java的问题. 一.下载jenv $ git clone h ...