本文转自

一.总体区别

  • final 用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
  • finally 是异常处理语句结构中,表示总是执行的部分。
  • finallize
    表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。允许回收此前未回收的内存垃圾。所有object都继承了finalize()方法

二.final详解

java中final也用来修饰3类东西:变量,方法和类。
  • 1.变量
    final修饰变量表示该变量是不可变的。例如 final int i =1;在程序中i的值就不允许改变了。比较容易混淆的是final用来修饰引用变量时,表示该引用变量是不可变的即引用变量指向的内存地址是不变的,但是被指的内存地址中的类是可以改变的。例如:
    final MyClass myClass = new MyClass();
    这样声明myClass后,其所指向的内存地址就固定了,但仍然可以改变myClass所引用对象的成员变量。如果试图重用myClass这个变量,让其引用另一个对象则会出错。
    myClass = new MyClass();//error!!!
  • 2.方法
    final修饰方法时表示该方法是不能被子类重写的。
  • 3.类
    final修饰类时表示该类是不能被继承的,由于java的单继承关系,所以该类是继承关系链中的终端。

关于final的几个注意事项:

  • a、final变量必须在声明的时候初始化或是在构造函数中初始化;
  • b、接口中声明的所有变量都是final的;
  • c、final,finally,finalize的区别。final表示不可变,final表示必须执行的语句,finalize表示垃圾回收时执行的代码。

三.finally 详解

Java异常处理模型与其他语言相比,关键词finally是最出色的新增特性了。finally构件使得该区段中的代码总是得以执行,而无论是否发生异常,特别适用于维护对象的内部状态(用来保证异常发生恢复对象的有效状态,以确保程序能在处理完异常后自动再次投入运行)和清理non-memory资源(垃圾回收机制无法处理的资源,如数据库连接、Socket等等)。 但有一点值得注意,那就是尽量不要从try区段中返回(调用return),因为只要有finally区段存在,它就一定会被执行,那么如果你在finally区段中又调用了一次return语句,则try区段中的返回值将会被遮掩,使得方法调用者得到的是finally区段中的返回值--这常常又与程序编写的初衷相背。

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

  1. Android源码中final关键字的用法及final,finally,finalize的区别

    Android开发的学习流程 final,finally,finalize的区别 Android的发展越来越快,Android开发人员越来越多,当两种情况碰撞,在诸多开发者中跟紧Android步伐脱颖 ...

  2. final finally finalize 的区别

    1.final final修饰类,说明这个类不能被继承,是以个顶级类. final修饰变量,说明这个变量是常量. final修饰方法,表示这个方法不能被重写,不过可以冲在final方法. 比如有个基类 ...

  3. final,finally,finalize的区别

    1.final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为 ...

  4. java中的final, finally, finalize的区别

    final修饰符(关键字),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为abstract的,又被声明为final的.将变量或方法声明为fin ...

  5. final fially finalize的区别

    1.性质不同 (1)final为关键字; (2)finally为区块标志,用于try语句中,是异常处理语句结构的一部分: (3)finalize是一个方法 2.作用不同 (1)final 为用于标识常 ...

  6. final, finally, finalize的区别

    final,修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为fi ...

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

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

  8. 关键字回顾(final/finally/finalize()、Synchronized、volatile、static)

    1. final, finally, finalize的区别 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行 ...

  9. final,finally和finalize的区别

    final,finally和finalize的区别 一.总体区别 final       用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承. finally     是异常处理 ...

最新文章

  1. 新浪云python示例_在新浪云上部署Django应用程序
  2. java 字符流与字节流区别_JAVA 字符流与字节流的区别
  3. 2019谷歌学术指标出炉,影响因子何去何从?
  4. TensorFlow Keras 官方教程
  5. YOLO系列算法精讲:从yolov1至yolov4的进阶之路(呕心沥血2万字超全整理,建议收藏!)
  6. html5 css svg,6款基于SVG的HTML5CSS3应用和动画
  7. telephone 为空 唯一索引_记一次线上唯一索引失效没有起效的场景
  8. 【英语学习】【Level 08】U02 Movie Time L3 Now showing
  9. BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
  10. 大规模虚拟化,舍我其谁?
  11. 计算机硬件及软件组成,计算机的组成及功能(硬件及操作系统)
  12. 生成解析器:Fsyacc
  13. orbslam2初始化流程
  14. 你在项目中做过哪些安全防范措施?
  15. UIAutomatorViewer排查问题
  16. 带附件/密送/抄送的 javaMail 邮件发送 -- java_demo(两种实现方式)
  17. 安装配置CentOS
  18. AR珠宝试戴经典案例盘点
  19. 数据结构之线性表及C语言实现
  20. k8s admission webhook初探

热门文章

  1. BZOJ.5068.友好的生物(思路)
  2. 2017《面向对象程序设计》课程作业六
  3. PHP 计算每个月的最后一天
  4. python 3 廖雪峰博客笔记(三) 命令行模式与交互模式
  5. 算法编程题的心得体会
  6. Linux 下从命令行打开pdf文件和html文件的命令
  7. linux 开机启动文件夹,Linux开机启动流程
  8. 【Python】for 循环倒叙遍历
  9. DW Question Answer Pro 1.3.4 DWQA问答系统插件
  10. [云炬创业管理笔记]第五章打磨最有效的商业模式测试2