黑马程序员技术交流社区
标题:
finally、return问题
[打印本页]
作者:
尹善波
时间:
2012-8-7 19:04
标题:
finally、return问题
//finally、return问题
public class Finally1
{
public static void main(String[] args)
{
System.out.print("s...."+method());
}
public static int method()
{
int s = 23;
try{
System.out.println("try.."+s);
return s=88;
}
catch(Exception e){
System.out.println("exception::" + e);
}
finally
{
System.out.println("fina..."+s);
s=4;
System.out.println("finally..."+s);
}
System.out.println("f ly..."+s);//
这一句怎么没有执行?
return s ;
//这个return到底是在finally前执行的还是之后执行的?finally中给s符的值
//
为什么没有被返回?
}
}
作者:
杜佳瑞
时间:
2012-8-7 19:54
本帖最后由 杜佳瑞 于 2012-8-7 20:39 编辑
public class Finally1
{
public static void main(String[] args)
{
System.out.print("s...."+method()); //
首先,调用method方法,4,最后打印s....88
}
public static int method()
{
int s = 23;
try
{
System.out.println("try.."+s); //
1,
打印try..23没问题,因为上面已经赋值
return s=88
;//return之前,先看看有没有finally,有就先执行finally,但是这里的返回值已经定了88.
}
catch(Exception e)
{
System.out.println("exception::" + e);
}
finally
{
System.out.println("fina..."+s); //
2,
打印fina...88
s=4;
System.out.println("finally..."+s);//
3,打印finally...4,finally执行完return s。
}
System.out.println("f ly..."+s);//这一句怎么没有执行?
try里面已经return了,这句话肯定执行不到。
return s ; //这个return到底是在finally前执行的还是之后执行的?finally中给s符的值,
这也执行不到
// 为什么没有被返回?
}
}
作者:
黑马-唐磊
时间:
2012-8-7 19:57
本帖最后由 黑马-唐磊 于 2012-8-7 20:03 编辑
你将“System.out.println("f ly..."+s);”放在finally代码块内部它就会执行,因为finally代码块执行完后它后面的就不会执行了且只会执行一次,所以后面的“System.out.println("f ly..."+s);”不会执行,它在这里返回了一个值,它将return s=88的存储的临时变量返回给了它的本类方法,所以主函数中打印method值就为88
作者:
周坤
时间:
2012-8-7 20:08
这是return和finally执行的问题。
一个有返回值的方法,当执行到return语句的时候,就退出方法了。不过,finally语句是必须执行的语句。即执行到return s=88;时方法体已经得到了返回值,它只是等待finally执行完。
而后执行finally语句,虽然s的值变化了,但不会改变返回值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2