final、finally、finalize 的区别

这篇具有很好参考价值的文章主要介绍了final、finally、finalize 的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

三者的区别 性质、作用

1.性质不同

  • final为关键字;

  • finalize()为方法;

  • finally为区块标志,用于try语句中;

2.作用

final

final:Java 修饰符,声明类不可继承,方法不可重写,属性不可变

注意

  • 由关键字 abstract 定义的抽象类含必须由继承自它的子类重载实现的抽象方法,因此无法同时用final和abstract来修饰同一个类。

  • final也不能用来修饰接口。 final的类的所方法都不能被重写,但这并不表示final的类的属性(变量值也是不可改变的,要想做到final类的属性值不可改变,必须给它增加final修饰。

finally

finally:异常处理的一部分,表示代码块无论有没有 catch 都会执行

finalize

finalize:Object 的一个用于通知对象回收的方法,可在此处释放资源

finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。
但是在某些特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。 使用finalize还需要注意一个事,调用super.finalize();

一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。 所以,推荐不要使用finalize()方法,它跟析构函数不一样。文章来源地址https://www.toymoban.com/news/detail-436695.html

到了这里,关于final、finally、finalize 的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 异常处理 try-except,else,finally, with 语句的区别

    在日常编写程序时,难免会遇到错误,有的是由于疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。 总的来说,编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。 Pyth

    2023年04月08日
    浏览(31)
  • 【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

    掌握final 的主要作用及使用; 掌握对象多态性的概念以及对象转型的操作; 掌握instanceof 的主要作用及使用; 在Java 中 final称为终结器,在Java 里面可以使用 final定义类、方法和属性,用于表示不可变性 。 final 类:当一个类被声明为 final 时,意味着该类不能被

    2024年02月16日
    浏览(33)
  • Lambda表达式内部访问的局部变量必须是final or effectively final 为什么

    在Java中,Lambda表达式内部访问的局部变量必须是final或者事实上的final。这是因为Lambda表达式实际上是一个闭包,它包含了对其外部的变量的引用,而这些变量在Lambda表达式执行期间不能被修改,否则会导致线程安全问题。 在Java中,final表示一个变量被赋值之后不能再

    2024年02月13日
    浏览(28)
  • C++ final用法简介

    如下代码: B 继承A ,编译以及运行都正常。 如果我们现在把第三行由: 修改为 编译错误如下: 由于 class A13 之后有加 final ,表明这个类不能被继承,所以编译报错。 最终全部代码如下: 如下代码B14继承A14,编译运行都正常, 如果我们将虚函数 后面加 final: 则编译错误

    2024年02月13日
    浏览(31)
  • 数据挖掘-FINAL笔记

    2023-06-27 10:25 缺失值填充:data = Imputer(missing_values=‘NaN’, strategy=‘mean’, axis=0) 或fillna 2023-06-27 10:48 散点图:plt.scatter(iris.data[iris.target label,x_index],iris.data[iris.tar get label,y_index],label=iris.target_names[label],c=color) 2023-06-27 10:50 3q:a=abs(X-mean) ; a[i]3*std 2023-06-27 10:57 均值归一;MeanNor

    2024年02月11日
    浏览(30)
  • final的安全发布

    两个“发布”“安全” 所谓发布通俗一点的理解就是创建一个对象,使这个对象能被当前范围之外的代码所使用 比如Object o = new Object(); 然后接下来使用对象o 但是对于普通变量的创建,之前分析过,大致分为三个步骤: 1、分配内存空间 2、将o指向分配的内存空间 3、

    2024年02月04日
    浏览(26)
  • final 关键字的用法

    final; //使用的位置: 1.用于声明常量:基本数据类型的常量不允许修改值,                            引用数据类型的常量不允许重新分配内存地址 2.用于声明方法(最终方法),该方法在了类中不能重写,在当前类中允许重载 3.用于声明类(最终类), 该类不允许子类继承

    2024年01月21日
    浏览(33)
  • Java的final修饰符

    可以将实例域定义为 final。对于 final 域来说,构建对象时必须初始化 final 实例域,构造对象之后就不允许改变 final 实例域的值了。也就是说,必须确保在每一个构造器执行之后,final 实例域的值被设置,并且在后面的操作中,不能够再对 final 实例域进行修改。 例如,可以

    2023年04月24日
    浏览(31)
  • Java final修饰符详解

    final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变,类似 C# 里的 sealed 。 使用 final 声明类、变量和方法需要注意以下几点: final 用在变量

    2024年02月11日
    浏览(25)
  • Java关键字:final解析

    目录 一、final变量 二、final方法  三、final类 final是Java语言中的一个,凡是被final修饰过的内容都是不可改变的。 final可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。 final double PI = 3.14 final定义的

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包