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

写出程序结果写出程序结果        class Test
{
        public static String output="";
        public static void foo(int i)
        {
                try
                {
                        if(i==1)
                                throw new Exception();        
                        output+="1";
                }
                catch(Exception e)
                {
                        output+="2";
                        return;
                }
                finally
                {
                        output+="3";
                }
                output+="4";
        }
        public static void main(String args[])
        {
                foo(0);
                System.out.println(output);//134
                foo(1);
                System.out.println(output); //13423
        }
}

4 个回复

倒序浏览
这题目不错,第二个是因为output是静态的,所以执行foo(1)前,output为134,finally在catch语句return前执行,所以后面+23,整体输出13423.
回复 使用道具 举报 1 0
这题有趣
回复 使用道具 举报
output是成员变量,第二次调用foo时没有重新初始化,所以第一次运行的结果还存在里面
回复 使用道具 举报
学习了 谢谢大大解释 还以为第二次是 23 呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马