是return之前执行么?
code=Java]public class Demo {
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			System.out.println(new Demo().test());
		}
		static int test(){
			int x = 1;
			try
			{
				return x;				
			}
			finally
			{				
				++x;
			}
		}
}[[/code]
返回的是1很不解,debug调试还是不解!请教大牛!
------解决方案-------------------- finally 是在return之前执行的
------解决方案-------------------- finally在return执行,但是不会影响return的结果。
------解决方案-------------------- 
/*这种问题得看字节码才能明白:
static int test();
Code:
  Stack=1, Locals=3, Args_size=0
  0:	iconst_1        //常量1压栈
  1:	istore_0        //常量1出栈,存储到局部变量0里面,也就是x里面
  2:	iload_0         //从局部变量0载入
  3:	istore_1        //存到局部变量1里面,变量1就是要返回的值
  4:	iinc	0, 1    //局部变量0加1,从这是执行finally里面的++x,可以看出来x再怎么修改对返回结果都没有任何的影响。
  7:	iload_1         //从局部变量1载入
  8:	ireturn         //返回
  9:	astore_2
  10:	iinc	0, 1
  13:	aload_2
  14:	athrow
  */
------解决方案-------------------- 探讨  /*这种问题得看字节码才能明白: static int test(); Code:  Stack=1, Locals=3, Args_size=0  0:	iconst_1        //常量1压栈  1:	istore_0        //常量1出栈,存储到局部变量0里面,也就是x里面  2:	iload_0         //从局部变量0载入  3:	istore_1  …… 
------解决方案-------------------- 探讨  public class smallT{ public static void main(String args[]){ smallT t = new smallT(); int b = t.get(); System.out.println(b); } public int get(){ try{ return 1 ; } finally{ return 2 ; } }……