黑马程序员技术交流社区
标题: try fianlly,和return的执行问题. [打印本页]
作者: 位俊鹏 时间: 2014-3-3 00:08
标题: try fianlly,和return的执行问题.
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());;
}
int test()
{
try
{
return func1();
}
finally
{
return func2();
}
}
int func1()
{
System.out.println("func1");
return 1;
}
int func2()
{
System.out.println("func2");
return 2;
}
}
-----------执行结果-----------------
func1
func2
2
跟之前的那个一样,是不是return语句执行了但并没有输出,在finally之后才输出,但已经被新的return 2 ;给覆盖了??
作者: 我要的幸福呢 时间: 2014-3-3 00:42
我感觉应该是try里面的代码在return之前先执行finally里面的代码,结果再finally面return了,try里面就没有return了
作者: 平凡成就非凡 时间: 2014-3-3 01:50
我想当执行到try{ }的代码时,当时的返回值也确实是 1,只是当执行到finaliy时,它的返回值变成啦2 ,可以理解为
前面的返回者被覆盖啦。就如同,x=1,当我们再次给x赋值。x=2,一样。我们在来输出x ,的值就会是2啦。
作者: Maple 时间: 2014-3-3 02:01
方法是只能有一个返回值的,finally是最后执行,所以返回值就是func2()里的return语句了,覆盖这样说也是对的吧
作者: 晴天_雨天 时间: 2014-3-4 09:37
当执行到try{ }的代码时,返回值为 1,当执行到finaliy时,返回值变成2 ,可以理解为
前面的返回值被后面覆盖了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |