看了一本书,上面说在try...catch....finally结构中,如果try里面有return语句,那么finally里面的语句还是会执行的
并且会在return语句以前就执行.但是自己做了下验证,却发现结果并非如此.发下代码:- public static void main(String[] args)
- {
- System.out.println(returnTest());//打印出的还是haha.
- }
- public static String returnTest()
- {
- String str="haha";
- try
- {
- return str;//如果finally里面的语句会在return前面执行,那么这里打印的应该是hehe才对.
- }
- catch(Exception e)
- {
- }
- finally
- {
- str="hehe";//这里改变了str的值
- }
- return null;
- }
复制代码 但是如果我在finally里面换成是打印语句- finally
- {
- System.out.println("我在finally里面");
- }
复制代码 打印结果却是:
我在finally里面
haha
这也印证了书上的说法,我想请问一下这是问什么?
|