Finally面试题:在finally块中对一个变量进行修改,方法返回的值是原来的值还是修改后的值?
- finally必然执行的异常统一处理出口,无论是否发生异常,都必然执行。程序被关闭了(电脑停电了,关机了),finally才不会执行。也可以通过System.exit(0)指令阻止finally执行。
------ 关于finally对变量进行修改的情况有两种:一 变量是引用数据类型,二 变量是基本数据类型。
(1) 引用数据类型 代码如下(示例):
------方法返回一个值是需要时间准备数据的,而当haha()方法在准备数据的时候,finally已经把对象p里面的age改成了28。所以输入结果为28(如图3所示)。
(2)基本数据类型 代码如下(示例):
------在这个例子中,a原来是10,修改后是20,但是为什么最后输出结果是原来的值,而不是修改后的值呢?这是因为方法返回一个的值是原本就备份好的,在这个例子中备份好的返回值是a=10(如图3