Java实例 Finally关键字的用法及面试题

1.Finally关键字的用法

      Finally一般与try连用,程序进入try块后,无论是因为异常而终止,还是因为其他方式返回而终止,finally块一定会执行。
      以下情况下不会执行 
     1. 关闭CPU(如电脑关机或者断电)
     2.在执行finally前执行System.exit(0);退出JVM虚拟机

2.面试题

1.

public class Demo1 {

	public static void main(String[] args) {
		System.out.println(num());

	}

	public static int num() {
		try {
			int i = 10;
			return i;
		}catch(Exception e) {
			return 0;
		}finally {
			int i = 20;
		}
	}
}

输出结果

10

解释:在程序执行try遇到return时i的值为10,所以此时会将10打包好并且创建一条返回路径等待将打包好的10返回,而finally则是将内存中i变量的值改变成20,但是return返回的10早已经被打包好等待返回,所以并不受finally中i的变化影响。

2.

public class Demo1 {

	public static void main(String[] args) {
		System.out.println(num());

	}

	public static int num() {
		try {
			int i = 10;
			return i;
		}catch(Exception e) {
			return 0;
		}finally {
			System.out.println("已执行");
		}
	}
}

输出结果

已执行
10

解释:还会执行,是在return后。如果try里面有return语句,此时会先执行return将返回值打包并创建一个返回路径等待,接着往下搜寻有没有finally语句,如果有则需先执行完finally后,再根据已经创建好的返回路径返回。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴帅345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值