finally只用一种情况不会操作:电脑断电或者程序被关闭
发布日期:2021-06-29 11:25:25 浏览次数:3 分类:技术文章

本文共 625 字,大约阅读时间需要 2 分钟。

finally只用一种情况不会操作:电脑断电或者程序被关闭

System.exit(0);  //退出JVM

在这里插入图片描述

finally的执行流程:

  1. 先计算返回值,并将返回值存储起来,等待返回。
  2. 执行finally代码块。
  3. 将之前存储(备份)的返回值,返回出去。

注意事项:

1.返回值是在finally运行之前就确定了,并且缓存了,不管finally对该值做任何的改变,返回的值都不会改变。
2.finally代码中不建议包含return,因为程序会在上述的流程中提前退出,也就说返回的值不是try或者catch中的值。
3.如果在try或catch中停止了JVM,则finally不会执行。例如停电,或通过如下代码退出JVM: sysem.exit(0);

由于引用数据类型和基本数据类型的不同,导致finally貌似没有被执行,实际被执行了。finally貌似没有被执行的原因如下:

在try语句块中,return 返回的a值为10,此时系统备份的返回值是10,虽然finally把a重新赋值为20,但是只是在栈中修改了这个值,此时系统备份的值依然是10,所以最终程序执行完成的时候,返回的是10。即finally貌似没有被执行。
在这里插入图片描述

在try语句块中,p.age是引用数据类型,是根据栈中的地址进行赋值的,此时备份返回的是p.age的地址,try语句块执行完后,finally通过p.age的地址进行重新赋值为28,所以最终程序执行结束的时候,返回的是28。

在这里插入图片描述

转载地址:https://blog.csdn.net/ZXyuanCSDN/article/details/117261731 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2021-06-08
下一篇:第四届蓝桥杯 省赛 JavaB组 振兴中华

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年05月01日 19时01分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章