首页 > 试题广场 >

请指出下面程序的运行结果() 1.5分 public cla

[单选题]
请指出下面程序的运行结果() 1.5分 public class TryDemo {
public static void main(String[] args) { System.out.println(test());
}
public static int test() { try {
return 1;
} catch (Exception e) {
return 2; } finally {
System.out.print("3"); }
} }
  • 13
  • 31
  • 12
  • 21
finally为方法内部必执行的部分 , 先输出3 , 再return 1 , 输出 1 , 故为31
发表于 2023-04-18 16:23:19 回复(0)
正常的执行顺序是try  catch finally 。
如果try、catch中有return语句,finally中没有return,会先执行return前的代码,然后暂时保存需要return的信息,再执行finally中的代码,最后再通过return返回之前保存的信息。
本题保存return1,再输出finally的3,最后输出保存的return1。
发表于 2023-09-03 13:51:38 回复(0)
1. 首先分析 test 方法的执行流程: - 在 test 方法中,首先进入 try 块, try 块中 return 1 被执行。此时方法应该返回 1 ,但是 finally 块会在方法返回之前执行。 2. 接着看 finally 块的执行: -  finally 块中的 System.out.print("3"); 会被执行,输出 3 。 3. 最后确定方法的返回值: - 虽然 finally 块执行了输出操作,但它不会改变 try 块中已经确定的返回值,所以方法最终返回 1 。 结果是先输出 3 ,然后 main 方法中的 System.out.println(test()); 会输出 1 。即输出结果为 31 。
编辑于 2024-10-26 15:23:41 回复(1)
走到try的时候,已经能确定返回值为1,finally必执行先输出3,最后输出test()的返回值
编辑于 2024-04-02 11:37:55 回复(1)
因为finally语句块的代码必定会被执行,而且return语句在finally语句块之前执行,所以最终的返回值是1,但是输出语句在finally语句块之后执行,因此输出结果为"3"和"1",即输出结果为"31"
发表于 2023-06-18 23:54:30 回复(0)