深入分析 try return finally之间执行顺序的问题

           前一段时间一直在参加各种公司的面试,面了很多家,也有几家自己觉得很不错的,准备5.1后从中挑一家准备入职了。职业生涯下一段的开始。在下一段工作开始前,有一段空闲时间。然后,就总结了以下那些奇奇怪怪的笔试题,想好好的分析下这类笔试题背后的运行原理。闲话不多说,直接上代码。其中有一道笔试题如下:            请问,以上代码输出的是多少?           我当时按照我...
摘要由CSDN通过智能技术生成

           前一段时间一直在参加各种公司的面试,面了很多家,也有几家自己觉得很不错的,准备5.1后从中挑一家准备入职了。职业生涯下一段的开始。在下一段工作开始前,有一段空闲时间。然后,就总结了以下那些奇奇怪怪的笔试题,想好好的分析下这类笔试题背后的运行原理。闲话不多说,直接上代码。其中有一道笔试题如下:

            

请问,以上代码输出的是多少?

           我当时按照我所知道的原则————finally块总是会执行的去判断,模棱两可的回答了,返回的是2。后面回到房间,由于好奇,自己在机器上跑了下,发现其实输出的是 9 。 于是就更好奇了。有以下两个疑问:

            1 )  难道 try中的 return 语句没用执行 ?

            2 )或者是 try中的return 语句已经执行了,但是后面有finally,于是等待finally执行,然后在finally中返回了?

            带着这两个疑问,去查阅了相关资料。刚好近期自己在看《深入理解Java虚拟机》,以及研究字节码方面的内容。

           查阅Java语言规范得知,即使 try 中有 return 语句,在return 前,先回去执行 finally 里面的内容。如果 try 和 finally 中都有 return 的话, 那么是 先 执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值