final,finally和finalize的区别

一.总体区别

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区段中的返回值--这常常又与程序编写的初衷相背。

from: http://blog.csdn.net/sheepmu/article/details/38326783

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

  1. final, finally, finalize 的区别

    本文转自 一.总体区别 final 用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承. finally 是异常处理语句结构中,表示总是执行的部分. finallize 表示是o ...

  2. 转 Java中final、finally、finalize的区别与用法

    Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...

  3. 【Java面试题】19 final,finally和finalize的区别

    总体区别 final       用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承. finally     是异常处理语句结构中,表示总是执行的部分. finallize   ...

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

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

  5. Java中final、finally和finalize的区别

    final.finally.finalize的区别 1.final修饰符(关键字).被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承.因此一个类不能既被abstract声明 ...

  6. JAVA面试题解惑系列(四)——final、finally和finalize的区别

    final.finally和finalize的区别是什么? 这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影.final.finally和finalize虽然长得像孪生三兄弟 ...

  7. Java中final、finally、finalize的区别

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

  8. final finally finalize 的区别

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

  9. final,finally,finalize的区别

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

最新文章

  1. UIButton的重复点击
  2. 【Linux入门到精通系列讲解】VFS分区动态绑定和CentOS7分区类型
  3. 【响应式Web前端设计】new Option()函数的作用(三区联动)
  4. exchange邮件中继服务器搭建,使用 Exchange 2010 传输中继应用程序服务器 SMTP 通信...
  5. Nginx_环境搭建
  6. liferay跳转页面
  7. php 受保护类,php中如何在外部修改类的私有或受保护属性值
  8. 面试中的这些坑,你踩过几个?
  9. 力扣53. 最大子数组和(JavaScript)
  10. 数据如何成为企业未来的商业资产?
  11. 手机QQ空间如何显示和修改手机机型型号
  12. 沪深300指数历史年分成分股名单数据集(2008-2019年)
  13. iOS开发小技巧汇总
  14. Vue-Watcher观察者源码详解
  15. GTX960M安装tensorflow-gpu心得
  16. 浅谈智能化能源管理系统平台在企业中的应用
  17. navicat 导出到excel 出现换行、空格等
  18. redis+结巴分词做倒排索引
  19. Excel如何输出高清图片?
  20. python 正则匹配 手机号 QQ号 邮箱 日期 图片

热门文章

  1. 大型网站架构演变和知识体系--转
  2. 【项目实战】基于python行为评分卡模型
  3. Java - 探究前后分离带来的跨域问题
  4. 并发编程-09安全发布对象+单例模式详解
  5. 实战SSM_O2O商铺_30【商品】商品添加之Controller层的实现
  6. Spring-AOP @AspectJ切点函数之execution()
  7. java同一包protect_Java基础知识 - 欢迎来到夜故事,一个人的故事 - OSCHINA - 中文开源技术交流社区...
  8. ca开头的车是什么牌子_动车与高铁的区别是什么?很少人知道!让我来告诉你吧...
  9. python学习笔记(十一)——正则表达式
  10. Docker 安装 Nginx