final 、finally的区别

本文深入解析了final和finally这两个在Java编程中容易混淆的关键字。详细介绍了final作为修饰符的四种主要用途,包括修饰数据、局部变量、方法和类,以及finally在异常处理中的关键作用。

final 、finally

开发工具与关键技术:工具:myeclipse  技术: final 、finally
作者:吴东梅
撰写时间:2019-05-11

final和finally单词书写相似,很容易被搞混,但是它们的作用却截然不同。
final修饰符
final主要用法有以下四种:
一、 用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时、构造方法或者初始化块中对它赋值。
final修饰成员变量:final修饰的成员变量必须由程序员显示的指定初始值。必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能在三个地方的其中之一指定。
如果已经指定过一次值之后,就不能再次指定了。
final修饰的类变量,必须在静态初始化块中指定初始值或声明该类变量时指定初始值,而且只能在两个地方的其中之一指定。
示例代码如下:
成员变量又称实例变量。
在这里插入图片描述

二、用来修饰局部变量,表示在变量的生存期中它的值不能被改变。
final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。
如果在定义时指定了默认值,那么就不能在后面的代码中为变量赋值。
如果在定义时没有指定默认值,那么可以在后面的代码中赋值一次,而且只能一次。
也不能对final修饰的形参赋值。
如下图所示:
在这里插入图片描述
三、修饰方法,表示该方法无法被重写;
首先定义了一个类,类里面有两个方法,一个是普通方法,一个是final修饰的方法,然后再定义另一个类来继承第一个类,然后重写定义的两个方法,会发现普通方法可以成功被重写,而被final修饰的方法则会报错,所以final修饰的方法无法被重写。如下图所示:
在这里插入图片描述
四、 修饰类,表示该类无法被继承。 需要注意的是:final修饰的类不可以被继承,但是可以继承别人。
而且String 默认有final修饰,也不能被继承。
在这里插入图片描述
finally
finally块一般用来关闭物理资源(数据库连接,网络连接,磁盘文件等),这些物理资源必须显式关闭。除非在try块、catch块中调用了退出虚拟机的方法( System.exit(0); ),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块一定会被执行。
示例代码:
在这里插入图片描述

运行结果如下:
在这里插入图片描述

final、finally的区别:
答:final:修饰符(关键字)有三种用法:1、类被声明为final,意味着它不能再派生出新的子类,即不能被继承;2、将变量声明为final,可以保证它们在使用中不被改变;被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。3、被声明为final的方法不能在子类中被重写。
finally:通常放在try…catch…的后面,finally块中的代码总能执行,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值