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

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

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单区别:? ??? 中等区别: ???虽然这三个单词在Java中都存在,但是并没有太多关联: ? ? ???final:java中的关键字,修饰符。 ? ? ? ? ? ?1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被声明为absrtact抽象类的和final的类。 ? ? ? ? ? ?2.如果将变量或者方法声明为final,可以保证它们在使用中不被改变. ? ? ? ? ? ? ? ? ?2.1 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。? ? ? ? ? ? ? ? ? ?2.2被声明final的方法只能使用,不能重载。 ???????finally:java的一种异常处理机制。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? finally是对Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。 ? ? ? ?finalize:Java中的一个方法名。 ????? ???????????????Java技术使用finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 详细区别: ?????这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是大相径庭。这一次我们就一起来回顾一下这方面的知识。 1.final关键字 我们首先来说说final。它可以用于以下四个地方: ?????1. 定义变量,包括静态的和非静态的。 ?????2. 定义方法的参数。 ?????3. 定义方法。 ?????4. 定义类。 我们依次来回顾一下每种情况下final的作用。 1.1 定义变量,包括静态的和非静态的。定义方法的参数 第一种情况: ??????????如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即它是个常量; ??????????如果final修饰的是一个对象,就表示这个变量被赋予的引用是不可变的 这里需要提醒大家注意的是,不可改变的只是这个变量所保存的引用,并不是这个引用所指向的对象。 第二种情况: ? ? ? ? ? ?final的含义与第一种情况相同。 实际上对于前两种情况,有一种更贴切的表述final的含义的描述,那就是,如果一个变量或方法参数被final修饰,就表示它只能被赋值一次,但是JAVA虚拟机为变量设定的默认值不记作一次赋值。 被final修饰的变量必须被初始化。初始化的方式有以下几种: ?????1. 在定义的时候初始化。 ?????2. final变量可以在初始化块中初始化,不可以在静态初始化块中初始化。 ?????3. 静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。 ?????4. final变量还可以在类的构造器中初始化,但是静态final变量不可以。 通过下面的代码可以验证以上的观点: Java代码 public class FinalTest { ?????// 在定义时初始化 ?????public final int A = 10; ??? // 在初始化块中初始化 ?????public final int B; ?????{ ??????????B = 20; ?????} ?????// 非静态final变量不能在静态初始化块中初始化 ?????// public final int C; ?????// static { ??????????// C = 30; ?????// } ?????// 静态常量,在定义时初始化 ?????public static final int STATIC_D = 40; ? ?// 静态常量,在静态初始化块中初始化 ?????public static final int STATIC_E; ?????static { ??????????STATIC_E = 50; ?????} ?????// 静态变量不能在初始化块中初始化 ?????// public stati

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档