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的区别相关推荐

  1. java中static、final 和 static final之间的区别

    java中static.final 和 static final之间的区别 static可以修饰:全局属性,方法,代码块,内部类(静态内部类或嵌套内部类) 由于静态属性和方法是属于该类的所有对象的,所 ...

  2. final是什么?作用?以及final finally finalize区别?

    final是什么? final: 最终的意思,修饰的东西不可改变.可以用于修饰类.方法和变量. final 有什么用? 被final修饰的类不可以被继承 被final修饰的方法不可以被重写 被fina ...

  3. final finally finalize()区别

    final finally finalize()区别 final 表示最终的.不可改变的.用于修饰类.方法和变量. finally 异常处理的一部分,它只能用在try/catch语句中,表示希望fin ...

  4. final关键字_Dart核心语言基础const关键字与final关键字的区别

    题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼搏过,尽力过,一切问心无愧 本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别. Dart核心基 ...

  5. java基础知识1---面向对象及final,finally,finalize区别

    1.面向对象(OOP)的特征 •抽象 :就是把现实世界中的某一方面提取出来,用程序代码表示,抽象出来的一般叫做类或接口. 抽象包括两个方面,一个数据抽象,另一个是过程抽象. 过程抽象 :表示功能的操作 ...

  6. Dart核心语言基础const关键字与final关键字的区别

    题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧 本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别 ** 你可能需要 ...

  7. java final f的区别_Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)...

    简单区别: 中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联: final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类 ...

  8. Java:static和final关键字的区别与比较

    文章目录 前言 一.final关键字 二.static关键字 总结 前言 本文记录笔者在复习Java基础期间学习的static和final关键字 一.final关键字 final关键字具有如下特点 f ...

  9. Final和Finally区别

    为什么要写final和finally的区别,首先大家会误以为final其实就是finally的修饰符,其实并不是这样的.其实final和finally是有很大的区别的,区别在于哪里呢?final和fi ...

  10. Flutter中关键字Const和Final之间的区别

    main() {     // 同时赋值已经确定好的值const和final是没有区别的   const date = '2020-09-01';   final date2 = '2020-09-0 ...

最新文章

  1. Oracle中Hint深入理解(原创)
  2. 【Qt】在ubuntu上打包发布Qt程序,可以不依赖Qt环境
  3. 仓库管理员怎样做台账_工作日志之仓库管理员与会计之间的对接工作
  4. Flink异步io应用场景之流表join维表
  5. Python环境下,提高pip安装库速度的方法!
  6. MySQL学习-MySQL数据库事务
  7. java之点击一次之后失效_JavaScript 事件绑定只能执行一次了,再次点击就变得无效 ,求助怎么回事...
  8. 杭电2027--统计元音
  9. H5+springboot(集成ffmpeg)实现前端视频录制以及webm格式转mp4
  10. tmb100 刷linux,天猫魔盒TMB100C短接刷机教程
  11. BiLSTM-CRF模型的流程
  12. 常用的MATLAB建模工具箱
  13. 总体设计(五个基本原理、软件结构图)
  14. BigDecimal的8种round舍入模式
  15. Google Chrome 81.0.4044.138 绿色增强版
  16. python数据分析基础试题_Python数据分析基础知识
  17. mysql 单表最多能存多少数据?
  18. Python 实例教学_ 04_排序
  19. 腾讯百度阿里,三巨头谁最开放?
  20. asp.net园林绿化服务交易网站

热门文章

  1. 8个字说明什么是领导力
  2. iOS 为图片 照片 添加水印 文字及图片
  3. Mac 卸载Java
  4. 电脑充电器,笔记本充电器都见过,但这些猫腻我不说你知道吗
  5. Mdb文件的还原成数据库文件(亲测有效)
  6. 信捷XC系列PLC与7台易能变频器 同时通讯程序 易能变频器通讯控制程序
  7. 校园二手市场交易平台(JAVA,SSM,BOOTSTRAP,JSP,AJAX,MYSQL)
  8. Unity切换到另一个场景的时候,发现该场景变暗了
  9. 群晖docker下载失败_群晖DS218+部署mysql
  10. 计算机网络之数据链路层