下面的程序代码输出的结果是多少?

行业问题 程序代码,结果 已帮助 人

下面的程序代码输出的结果是多少?

热搜:下面程序的功能是输出数组s中最大元素

答案解析

难度★★☆ 搜索
  • 正确答案:

    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。
    我可以通过下面一个例子程序来帮助我解释这个答案,从下面例子的运行结果中可以发现,
    try 中的return 语句调用的函数先于finally 中调用的函数执行,也就是说return 语句先执行,
    finally 语句后执行,所以,返回的结果是2。Return 并不是让函数马上返回,而是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());;
    }
    int test()
    {
    try
    {
    return func1();
    }
    finally
    {
    return func2();
    }
    }
    int func1()
    {
    System.out.println("func1");
    return 1;
    }
    int func2()
    {
    System.out.println("func2");
    return 2;
    }
    }
    -----------执行结果-----------------
    func1
    func2
    2
    结论:finally 中的代码比return 和break 语句后执行