Java当finally遇到return

return步骤:
  1.计算返回值(如果有)
  2.保存返回值到调用栈中(基本数据类型或者引用地址)
  (如果return 在try或者catch模块中,并且有finally,保存返回值到调用栈中后会先执行finally模块内容,finally模块相当与一个新的栈帧,会使用前面的局部变量;如果finally块中有一个return语句,也会导致方法返回)
  3.跳转到调用者
  4.调用者继续执行,执行return后其他代码
  5.资源回收

基于上面步骤可以得到结论:

  1.只要有finally不管有没有return,不管有没有catch 都会执行

  2.如果finally之前没有return,则finally可以修改返回值

  3.如果finally之前有return,则finally执行不会影响调用栈保存的返回数据;但是对于引用数据类型可以改属性

  4.如果finally中有return,则该return会更新覆盖前面的调用栈中保存的数据,所以一般不在finally中return

 

posted @ 2022-03-02 16:13  流点汗证明还活着  阅读(452)  评论(0)    收藏  举报