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块中。
final 、finally的区别相关推荐
- java中static、final 和 static final之间的区别
java中static.final 和 static final之间的区别 static可以修饰:全局属性,方法,代码块,内部类(静态内部类或嵌套内部类) 由于静态属性和方法是属于该类的所有对象的,所 ...
- final是什么?作用?以及final finally finalize区别?
final是什么? final: 最终的意思,修饰的东西不可改变.可以用于修饰类.方法和变量. final 有什么用? 被final修饰的类不可以被继承 被final修饰的方法不可以被重写 被fina ...
- final finally finalize()区别
final finally finalize()区别 final 表示最终的.不可改变的.用于修饰类.方法和变量. finally 异常处理的一部分,它只能用在try/catch语句中,表示希望fin ...
- final关键字_Dart核心语言基础const关键字与final关键字的区别
题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼搏过,尽力过,一切问心无愧 本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别. Dart核心基 ...
- java基础知识1---面向对象及final,finally,finalize区别
1.面向对象(OOP)的特征 •抽象 :就是把现实世界中的某一方面提取出来,用程序代码表示,抽象出来的一般叫做类或接口. 抽象包括两个方面,一个数据抽象,另一个是过程抽象. 过程抽象 :表示功能的操作 ...
- Dart核心语言基础const关键字与final关键字的区别
题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧 本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别 ** 你可能需要 ...
- java final f的区别_Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)...
简单区别: 中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联: final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类 ...
- Java:static和final关键字的区别与比较
文章目录 前言 一.final关键字 二.static关键字 总结 前言 本文记录笔者在复习Java基础期间学习的static和final关键字 一.final关键字 final关键字具有如下特点 f ...
- Final和Finally区别
为什么要写final和finally的区别,首先大家会误以为final其实就是finally的修饰符,其实并不是这样的.其实final和finally是有很大的区别的,区别在于哪里呢?final和fi ...
- Flutter中关键字Const和Final之间的区别
main() { // 同时赋值已经确定好的值const和final是没有区别的 const date = '2020-09-01'; final date2 = '2020-09-0 ...
最新文章
- Oracle中Hint深入理解(原创)
- 【Qt】在ubuntu上打包发布Qt程序,可以不依赖Qt环境
- 仓库管理员怎样做台账_工作日志之仓库管理员与会计之间的对接工作
- Flink异步io应用场景之流表join维表
- Python环境下,提高pip安装库速度的方法!
- MySQL学习-MySQL数据库事务
- java之点击一次之后失效_JavaScript 事件绑定只能执行一次了,再次点击就变得无效 ,求助怎么回事...
- 杭电2027--统计元音
- H5+springboot(集成ffmpeg)实现前端视频录制以及webm格式转mp4
- tmb100 刷linux,天猫魔盒TMB100C短接刷机教程
- BiLSTM-CRF模型的流程
- 常用的MATLAB建模工具箱
- 总体设计(五个基本原理、软件结构图)
- BigDecimal的8种round舍入模式
- Google Chrome 81.0.4044.138 绿色增强版
- python数据分析基础试题_Python数据分析基础知识
- mysql 单表最多能存多少数据?
- Python 实例教学_ 04_排序
- 腾讯百度阿里,三巨头谁最开放?
- asp.net园林绿化服务交易网站
热门文章
- 8个字说明什么是领导力
- iOS 为图片 照片 添加水印 文字及图片
- Mac 卸载Java
- 电脑充电器,笔记本充电器都见过,但这些猫腻我不说你知道吗
- Mdb文件的还原成数据库文件(亲测有效)
- 信捷XC系列PLC与7台易能变频器 同时通讯程序 易能变频器通讯控制程序
- 校园二手市场交易平台(JAVA,SSM,BOOTSTRAP,JSP,AJAX,MYSQL)
- Unity切换到另一个场景的时候,发现该场景变暗了
- 群晖docker下载失败_群晖DS218+部署mysql
- 计算机网络之数据链路层