天天看点

try-finally【面试题】

首先来看一段代码

最终返回什么呢?可能你知道,但是相信有一部分人是懵了的,因为我们都知道try-finally代码中finally模块最终一定会执行。下面咱们通过java字节码指令来看看到底发生了什么。

首先找到.class文件,然后执行

javap -verbose Test.class >tt.tx

然后保存到tt.txt文件中

3 13 1 ret Ljava/lang/String;

.....其他部分省略

由字节码指令可以看出,显示把hello保存到本地变1和本地变量2中。后面返回的是本地变量2,所以返回的就是hello,通过现象看本质。

Java字节码指令可以参考官方的,也可以参考一个中文翻译的:

https://www.cnblogs.com/longjee/p/8675771.html