我好想在哪里看到过,原因好像是即使try里面有return,JVM在执行完try里面的代码的时候不马上return而是先把返回数据存储起来,然后再运算finally{}里面的代码,即使finally改变了上面的数据,结果还是会返回return时候保存的数据,也就是finally不能改变上面的任何数据。
这个问题的关键就是:执行顺序跟System.exit(0);语意的问题。
顺序是try return(保存顺序,先不返回),执行finally代码块中的代码,在执行return。
而System.exit(0);的意思是直接退出虚拟机,所以虚拟机根本不会继续向下面执行了,如果这个方法有返回值,并且主函数里面还有后续代码需要运行的话,都不会执行了,所以这个没多大意义。
求分!!!!
|