- public static void main(String[] args) {
- int i = 0;
- System.out.println(method1(i));
-
- }
-
- public static int method1(int i){
-
- try{
-
- return i;
- }
- finally{
- i++;
- System.out.println(i);
- //return i;
- }
- }
复制代码
这段代码输出是
1
0
因为try里面的return并没有立刻返回,而是把i=0这个值存在一个临时区域,然后执行finally的i++,虽然i变成1了,但是返回的还是临时区域里的0,但是如果把finally里面注释的return i打开,则执行finallyi++之后监测到return语句,则将i=1替换掉临时区域的i=0,然后将i=1返回。 |