黑马程序员技术交流社区
标题:
try中的return语句和finally中的语句执行先后顺序
[打印本页]
作者:
王自强
时间:
2012-10-18 13:56
标题:
try中的return语句和finally中的语句执行先后顺序
public class Test {
/**
* @param args add by zxx ,Dec 9, 2008
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());;
}
static int test()
{
int x = 1;
try
{
return x;
}
finally
{
x = 5;
}
}
}
复制代码
结果为1,比较纠结,帮忙看看
作者:
王威
时间:
2012-10-18 14:04
你是想说在finally里给x重新赋值,但是打印出来还是原来那个值是吧,你可以去看看这个帖子
http://bbs.itheima.com/forum.php?mod=viewthread&tid=28348
如果try语句体中含有return语句,就会把要return的值存放在一个不同于x的变量中,当finally执行完后
再从中取出值,所以你在finally中改变x的值不会影响try中要返回的值,因为这是从先前保存的另一个不同于x的变量中取得的
作者:
古银平
时间:
2012-10-18 14:04
执行try里边的代码,返回x=1,finally 中x=5,但你打印的是 System.out.println(new Test().test());而Test函数只返回了x=1;finally中虽然改变了x的值,但没有返回给函数,所以打印结果是1
作者:
李贺晓
时间:
2012-10-18 14:11
return x 把x的值已经返回,放在了主函数中,只是还没有打印,后面执行完finaly里面的语句后,在打印return的X值(return的x值为1)
作者:
王自强
时间:
2012-10-18 14:19
王威 发表于 2012-10-18 14:04
你是想说在finally里给x重新赋值,但是打印出来还是原来那个值是吧,你可以去看看这个帖子http://bbs.ithei ...
thanks 多谢
作者:
黑马-zhangping
时间:
2012-10-18 14:52
try中有个return语句,会把x的值返回给主函数,而下面final语句中没有return,只会重新给x赋值,但是主函数只会打印原来return过来的x值。
作者:
崔政
时间:
2012-10-18 23:28
想要5是吧,给你5.
你try代码块中已经返回值,而你定义的x是在方法中,和返回的结果无关。。
还有,既然方法已经static了,就不要再new对象了{:soso_e134:}
public class Test {
public static void main(String[] args)
{
System.out.println(test());;
}
static int test()
{
int x = 1;
try{
return x;
}
finally
{
return x = 5;
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2