一、性质不同

(1)final为关键字;

(2)finalize()为方法;---垃圾回收机制中的方法(GC)

(3)finally为为区块标志,用于try语句中;

二、作用

(1)final为用于标识常量的关键字,final标识的关键字存储在常量池中(在这里final常量的具体用法将在下面进行介绍);

(2)finalize()方法在Object中进行了定义,用于在对象“消失”时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数;用户自定义时,用于释放对象占用的资源(比如进行I/0操作);

(3)finally{}用于标识代码块,与try{}进行配合,不论try中的代码执行完或没有执行完(这里指有异常),该代码块之中的程序必定会进行;

三、final详解

1定义变量

1.1  final定义基本类型变量时,要求变量初始化必须在声明时或者构造函数中,不能用于其它地方。该关键字定义的常量,除了初始化阶段,不能更改常量的值。

1.2  final定义对象的引用,该引用的初始化与定义常量时的要求一致;该关键字定义的对象内容可以改变,但是引用指向的地址不能改变;

2定义参数

如果传入该参数定义的变量时,方法不能对该参数内容进行修改(错误),与定义变量的修改规则相同;java方法中传递基本类型时是传值的,java方法对于对象的传递是传参的;<归根结底,java中方法的传递是依靠传递“副本”:对于基本类型,首先建立一个Copy,并将传入的值赋值给Copy,然后对Copy进行操作;对于对象类型,首先建立一个引用Copy,并将传入的对象引用赋值给Copy>

比如:method(final int test);

有些书上说,这里final定义参数,尤其是对象的参数很有作用,不能在方法内对于对象的内容进行改变,这样的说法是错误的!原来我也认为这样有些函数式编程的特点,不能对于对象的内容进行修改该,这里依旧可以对对象的内容进行修改。

??定义该参数有什么用??

String天生就是final类型的!

3定义方法

(1)使用final关键字定义的方法,不能被子类继承;

(2)允许编译器将所有对此方法的调用转化为inline(行内)行为,即可以将此方法直接复制在调用处,而不是进行例行的方法调用(保存断点、压栈),这样会使程序的效率升高。但是---------如果过多的话,这样会造成代码膨胀,反而会影响效率,所以该方法要慎用。。

4定义类

一个任何final类无法被任何人继承,这也就意味着此类在一个继承树中是一个叶子类,并且此类被认为是很完美的,不需要进行任何修改(总之是不推荐使用)

转载于:https://www.cnblogs.com/Andy-/p/7574958.html

final/finalize/finally的区别相关推荐

  1. final、finally与finalize三者的区别

    转自:final.finally与finalize三者的区别 摘要:final为常量关键字,而finally为异常关键字,finalize为object自带方法名.看到这个题目,感觉像是高中题目一样. ...

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

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

  3. final,finally,finaliz的区别(Java)

    final,finally,finaliz的区别(Java) final-修饰符(关键字) 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 a ...

  4. final 、finally的区别

    final .finally 开发工具与关键技术:工具:myeclipse 技术: final .finally 作者:吴东梅 撰写时间:2019-05-11 final和finally单词书写相似, ...

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

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

  6. 面试官:final、finally、finalize 有什么区别?

    作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 重要说明:本篇为博主<面试题精选-基础篇>系列中的一篇,查看 ...

  7. final, finally, finalize有什么区别?

    1.final Final是最终的意思,标示不能被改变,可以用于成员变量(包括方法参数),方法.类. 修饰变量,变量一旦被初始化便不可改变. 修饰方法,方法不能被覆盖. 修饰类,类不能被继承. 2.f ...

  8. final,finally,finalize有什么区别

    初步了解 这是一道非常典型的面试题,而它也是有一系列的典型回答的: final可以用来修饰类.方法.变量,分别有不同的意义所在,final修饰的class代表不可继续扩展,final修饰的变量代表不可 ...

  9. 关键字—final static const的区别

    关键字 解释 修饰类 修饰方法 修饰变量 final:终态 这个关键字的含义是"这是无法改变的"或者"终态的": 这个类不能被继承,这个类的所有方法都是fina ...

最新文章

  1. 玩转iPhone网络通讯之BSD Socket篇
  2. 【设计模式】适配器模式 ( 概念 | 适用场景 | 优缺点 | 外观模式对比 | 适配器模式相关角色 | 类适配器 | 对象适配器 | 实现流程 )
  3. mysql如何查询本年_mysql 查询本月、本年的数据
  4. 爬虫 - HDU题目信息
  5. 对Kalman Filter的理解
  6. Spring Boot 项目的这些文件都是干啥用的?
  7. urban数据集_JUST技术|CK实现时序数据管理
  8. 95-30-050-java.util-LinkedHashMap
  9. 随想录(35岁后的程序员)
  10. Flutter之SemanticsBinding和WidgetsBindingObserver简析
  11. 库论计量计算电池容量
  12. CIC滤波器设计原理总结
  13. JS校验上传图片类型
  14. 信息学奥赛一本通在线评测平台的一些bug
  15. 必读开发规范之阿里巴巴开发手册(个人整理版)
  16. 谷歌大脑组合模型霸榜 SuperGLUE,什么模型这么高?
  17. ie不能加载flash html,ie浏览器flash无法加载怎么修复_win7系统ie浏览器flash加载不了如何解决-系统城...
  18. 网恋背后的骗局:那些被宰杀掉的猪!必看!
  19. 【论文阅读】PerfectDou: Dominating DouDizhu with Perfect Information Distillation
  20. 海康威视SDK二次开发通过云台参数设置控制摄像机的位置

热门文章

  1. 银河麒麟配置java环境_中标麒麟系统上安装Java、Eclipse指南.doc
  2. Pycharm虚拟环境的使用
  3. tm是什么域名_入驻天猫,需要什么条件?
  4. W10系统matlab无法保存对该路径的更改 pathdef_MATLAB的运行与窗口介绍
  5. java缓存_使用Redis和Java进行数据库缓存
  6. 【codevs1001】舒适的路线,心累的冰茶几
  7. php ftp 下载大文件,文件在用php(ftp)下载后损坏[重复]
  8. 和电商有关的词语_电商描写的词语 形容“电”的词语有哪些?
  9. python自动备份手机_python实现自动备份windows应用数据
  10. bzoj1877 [SDOI2009]晨跑 费用流