说说自己的理解吧,我觉得是这样的,
在例一里,当执行到try里的return语句时,它会告诉虚拟机,"我要返回了,返回值1",但是得先执行finally语句块,
试想一下,如果结果是返回1,那就说finally里的语句根本没执行,这显然是不对的.于是执行finally里的return 2,这句一执行,就直接over了,返回2,
程序也不会再去返回1,因为已经over 了嘛
例二,同理,执行try里的return x,它会告诉虚拟机,"我要返回了,返回值1(这里的x是1)",接着执行finally里的++x,把x变成了2,finally语句块结束,
接着,前面的"我要返回了,返回值1"就执行了,程序结束
|