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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马蒙蒙 黑马帝   /  2011-7-29 16:15  /  2202 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一段代码:
public class  smallT
{
    public static void  main(String args[])
    {
        smallT t  = new  smallT();
        int  b  =  t.get();
        System.out.println(b);
    }
   
    public int  get()
    {
        try
        {
            return 1 ;
        }
        finally
        {
            return 2 ;
        }
    }
}
为什么返回值是2呢?请教高手

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-7-29 17:29:38
沙发
不论有没有异常产生,finally块,都会在方法return之前被执行一次。
我个人认为:在finally中的返回值,覆盖了try中的返回值。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-29 17:40:40
藤椅
看情况的吧,反正finally肯定会执行,但是1也有可能返回
回复 使用道具 举报
黑马网友  发表于 2011-7-29 17:50:21
板凳
记住一点,除非是断电或其他外部原因或在try中用了System .exit(0),否则finally的语句都会被执行的
package com.heima;

public class  SmallT {
    public static void  main(String args[])
    {
        SmallT t  = new  SmallT();
        int  b  =  t.get();
        System.out.println(b);
    }
   
    @SuppressWarnings("finally")
        public int  get()
    {
        try
        {
            //return 1 ;
            [color=Red]System.exit(0);[/color]        }
        finally
        {
            return 2 ;
        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-29 17:57:18
报纸
try中没有异常。所以不会返回1.而final是必须执行的,所以结果是2

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答错了吧

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马