正确的解释:
return先去执行,建立返回路径,然后再去执行finally的代码,最后return再彻底返回.
通俗来说,finally是return的最后一口气,return先把生前该办的事给办了(将return的语句体打包,建立好返回路径),然后再看看有没有什么遗愿(看有没有finally的语句体,有的话就执行),最后再彻底挂掉;
值得注意的是,比如return里的语句体是int x = 10;finally里的语句体是int x = 20;那么返回路径里x的返回值是10;这段代码执行完毕后,x的值为20,而方法已经返回,这个已经拿不到了,所以在finally里进行赋值是没有意义的,一般是用来关流释放资源 |