首页 新闻 搜索 专区 学院

谁能解释下??

0
悬赏园豆:5 [待解决问题]

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());;

    }

 

    static int test()

    {

       int x = 1;

       try

       {

           return x;

       }

       finally

       {

           ++x;

    System.out.println("this is the x:" + x );

       }

    }

   

}

//结果:

this is the x:2
1

lincolnPei的主页 lincolnPei | 初学一级 | 园豆:197
提问于:2013-08-19 19:37
< >
分享
所有回答(6)
0
yxd5357 | 园豆:216 (菜鸟二级) | 2013-08-19 20:10
1

这个问题是要分析try{}catch(){}finally{}的执行流程的。

finally{}中的内容是指,不论try{}中的代码段执行过程中是否会发生异常,在退出(return ....;)方法之前,都要执行finally{}中的代码段。

所以在try{}中,已经确定要返回1,但此时并没有立即返回,而是去执行finall{}中的代码段。

因此,先打印this is the x:2;

然后,打印机返回值1。

 

乐享程序员 | 园豆:930 (小虾三级) | 2013-08-21 03:07
0

是呀,finally会在返回前执行

angelshelter | 园豆:9676 (大侠五级) | 2013-09-08 16:27
0

二楼正解

Zerml | 园豆:202 (菜鸟二级) | 2014-01-22 15:19
0

静态方法都用实例调用。。。

想飞行的蚂蚁 | 园豆:220 (菜鸟二级) | 2014-04-22 17:47
0

二楼正解

flab | 园豆:208 (菜鸟二级) | 2014-05-06 13:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册