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

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

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

热搜:下面程序的功能是输出数组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 语句后执行