黑马程序员技术交流社区

标题: 返回值的问题 [打印本页]

作者: 马蒙蒙    时间: 2011-7-29 16:15
标题: 返回值的问题
一段代码:
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呢?请教高手
作者: 匿名    时间: 2011-7-29 17:29
不论有没有异常产生,finally块,都会在方法return之前被执行一次。
我个人认为:在finally中的返回值,覆盖了try中的返回值。
作者: 匿名    时间: 2011-7-29 17:40
看情况的吧,反正finally肯定会执行,但是1也有可能返回
作者: 匿名    时间: 2011-7-29 17:50
记住一点,除非是断电或其他外部原因或在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 ;
        }
    }
}
作者: 匿名    时间: 2011-7-29 17:57
try中没有异常。所以不会返回1.而final是必须执行的,所以结果是2




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2