A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© alexsoon 中级黑马   /  2014-6-30 19:30  /  1827 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先来程序非常简单
public class AlexDemo{
public static void main (String [] args)
   {
        System.out.println(selent());
   }
static boolean selent()
    {
         try {
                 return true;
              }
        finaly
             {
                 return false;
             }
    }
}
这个程序可以编译通过没有错误?为什么返回值是false?在内存中是什么样的

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

8 个回复

倒序浏览
finally 是最后执行的,selent退出之前一定要执行finally
回复 使用道具 举报
使用了try后,为什么没有使用catch来捕获异常?
finally里的代码,总是在最后执行,所以总会返回false;

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
在执行try的时候,应为有finally的存在,没有执行return true;而是转到finally里面执行,执行了return false;所以try代码块里的return true;就没有执行;

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
因为有finally的存在,在 程序结束之前,也就是说 rerurn true 之前,一定会执行finally语句块,在执行finally时,return false ,程序结束。
回复 使用道具 举报
finally里的代码,总是在最后执行,所以总会返回false;
回复 使用道具 举报
finally里的代码,最后执行,返回false;
回复 使用道具 举报
跃动 中级黑马 2014-6-30 22:31:45
8#
执行流程:
1.执行return返回语句(return之后的语句内容),计算返回值,暂存在一个临时变量中。
2.执行finally语句块。
3.return 原来已经计算得到的结果值。

不知能否解决你的疑问?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
luio 初级黑马 2014-6-30 23:04:06
9#
finaly报错啊。。是最后执行的 和TRY冲突
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马