Java基础-笔试题常考-try、finally

作者: 陈文洁945 | 来源:发表于2016-12-15 19:55 被阅读142次

    请问,代码运行后输出结果是什么

    正确答案是:ABAB

    1.这道题考察的点是:return和finally的执行顺序是什么;

    执行过程:

    前面输出AB,大部分人是没有疑惑的,这是因为Test1方法里面的两个输出语句。

    之后,当代码执行到20行时,

    先将label='A'进行赋值,

    后会检测是否存在finally的语句

    有,则执行finally的语句,即跳到22行,接着执行23行,Label='B',故最终结果Label的值是B!;

    最终将return语句返回(此时并不进行赋值操作,Label虽然等于B,但是返回的仍然是刚才尚未执行finally语句前的值)。

    最终打印的结果是:ABAB

    相关文章

      网友评论

      • 7cd111f972c6:不是吧,调用test1后,执行retrun,后面的finally还会执行?
        陈文洁945:@德华弟弟 Test1方法是有返回值的,返回值是‘A’,作为输出语句的值。所以运行到第13行代码,实际上是输出了ABA三个数(方法体内部2个,返回值1个)。
        程序运行至第14行代码时也输出一个数‘B’。
        总共输出ABAB。
        (这回我讲清楚了吗 :flushed:
        7cd111f972c6:@陈文洁945 那也应该输出3个啊,main方法调用后第一次输出AB,第二个输出只是输出label输出B,怎么是4个呢?
        陈文洁945:@德华弟弟 会的。
        当代码运行到retrun这一行的时候,会去检测是否有finallly的存在,若存在,则会执行finally里面的内容。
      • c91dd259e18c:不应该是输出三个值吗?
        陈文洁945:@手电筒恩 不客气 :smile:
        c91dd259e18c: @陈文洁945 嗯嗯,谢谢喽
        陈文洁945:@手电筒恩 不是的,是输出四个值。
        第一个和第二个值是Test1方法里的两个输出语句
        第三个是main方法里面的第一条输出语句
        第四个是main方法里面的第二条输出语句

      本文标题:Java基础-笔试题常考-try、finally

      本文链接:https://www.haomeiwen.com/subject/uupgmttx.html