本帖最后由 张小锋 于 2012-5-6 22:09 编辑
书上说当有finally语句并且try中有return,在执行到return(还未执行)的时候,会先执行finally里面的内容,然后再执行行try中的return。
但下面就是有说明了什么呢? public class Reflex { public static void main(String[] args) { System.out.println(textFun()); System.out.println("----------------------------"); System.out.println(textFun2()); } static String textFun(){ String sign="null"; try { System.out.println(sign="try"); 第一步执行 return sign="try return"; 第四步执行,所以返回值就是try return } catch (Exception e) { } finally{ System.out.println(sign="finally"); 第二步执行 sign="finally return "; 第三步执行 } return sign="Over"; } static String textFun2(){ String sign="null"; try { System.out.println(sign="try"); return sign; 此处不同的就是没有从新赋值
} catch (Exception e) { } finally{ System.out.println(sign="finally"); sign="finally return "; } return sign="Over"; } }
打印:
try
finally
try return
----------------------------
try
finally
try
方法textFun2中的try中在执行return时候,虽然没有在return之后从新赋值,但return子后也应该sign="finally return "啊,为什么sign值又还原到第一步子后的值呢? |