黑马程序员技术交流社区
标题:
关于finally的问题
[打印本页]
作者:
程旦
时间:
2012-3-30 12:08
标题:
关于finally的问题
public class Test {
public static void main(String[] args) {
System.out.println(decision());
}
public static boolean decision(){
try{return true;}finally{return false;}}
}
这段代码的运行结果是 false 但是 finally里面的代码不是一定要执行的吗??????
作者:
陈明
时间:
2012-3-30 12:16
你finally返回的就是是false啊!~结果是false啊!不矛盾吧?
作者:
陈明
时间:
2012-3-30 12:22
补充:你想要不执行finally 里面的内容 有一个办法 就是system.exit(0); (系统退出 jvm结束);
作者:
肖发腾
时间:
2012-3-30 12:30
好像有一位高手验证过,return true的true 是被放在了内存中,并没有立刻返回,当执行完finally后再返回,
恰巧,finally中也有返回,那么finally中的返回false覆盖了内存中的true。。。
这样的解释楼主明白了么
作者:
李井山
时间:
2012-3-30 12:47
ffinally一定要执行,decision()方法try{return true;}完成后,方法没结束,继续向下执行,就执行到了finally{return false;}},可理解为后面的把前面的覆盖了!
作者:
郑洋洋
时间:
2012-3-30 12:52
结果很对嘛,你就是因为执行了finally代码块里程序了,返回结果才为false
作者:
方江
时间:
2012-3-30 17:41
finally是最终执行,也就是说,无论你上面条件在真,你最终执行的是假,他返回的肯定是假。你就是上面没有判断,他也返回的 是假。fanlly除非程序挂了才不执行,不然你这样写,他终究是会执行的,该来的总会来的
作者:
胡川
时间:
2012-3-30 18:09
finally是不管什么样的情况都会执行它后面的代码块的,return的话也会执行的,除非上面代码快遇到
System.exit(0),才会直接退出,不执行finally的语句
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2