关于finally指令的执行问题(面试用)
一般情况下,finally指令哪怕在跳出循环指令结束的情况下依然会被执行(删除内存、关机、关掉程序等外部因素除外)
以下情况就是内部关闭jvm导致finally无法执行
关于引用数据类型和基本数据类型利用finally指令进行赋值的结果不同问题,如下两图所示
1.引用数据类型
栈内存中存储的是位置,finally执行修改的是堆中的数据,最后位置指向依旧是不变的,所以引用数据类型的finally指令可以更改数值。
2.基本数据类型
基本数据类型的return返回值是复制一个当前数值,哪怕原数值 被finally指令更改,引用时的数据还是第一个复制的值不变。