黑马程序员技术交流社区
标题:
新发一贴抒发对一位同学finally语句的**之情
[打印本页]
作者:
许圣建
时间:
2012-3-11 00:53
标题:
新发一贴抒发对一位同学finally语句的**之情
原帖链接:为什么finally语句会在这个return后面执行 求解释 为什么结果是5
http://bbs.itheima.com/forum.php ... 8&fromuid=13221
大家可以试试下面这段代码跑出来的结果:
public class TestTryCatch {
/**
*/
public static void main(String[] args)
{
System.out.println("i的值为。。。" + new TestTryCatch().test());
}
private int test() {
int i = 1;
try
{
return i;
}
finally
{
++i;//[b]如果结果是2,就说明return语句是在finally之后才执行,嗯哼?[/b]
System.out.println("finally is Executed…");
}
}
}
复制代码
虚脱了,晚安!
作者:
李明伟
时间:
2012-3-11 08:11
由于try catch finally语句的执行顺序是先执行try内的语句,如果有异常则执行catch,执行完后会执行finally内的代码,
上面这段代码中先执行的try内的代码,返回了i的值1,后又执行finally内的语句,++i,i变为2,再执行System.out.println("finally is Executed…");
然后再去执行return,将1返回,以为2是return之后执行的,所以返回的是1不是2
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2