广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中final,finally,finalize 有什么区别
  • 952
分享到

Java中final,finally,finalize 有什么区别

2024-04-02 19:04:59 952人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1.final 介绍1.1 final 用法说明1.2 final 用法展示2.finally 介绍2.1 finally 用法展示2.2 finally 扩展3.finaliz

1.final 介绍

finalJava语言中的一个关键字,使用 final修饰的对象不允许修改或替换其原始值或定义。​

final 可以用来修饰:类、方法、变量和参数,其中可以用来修饰“参数”这一项,容易被人遗忘,这是 final 的 4 种用法。​

1.1 final 用法说明

final修饰类时,此类不允许被继承,表示此类设计的很完美,不需要被修改和扩展。

final修饰方法时,此方法不允许任何从此类继承的类来重写此方法,表示此方法提供的功能已经满足当前要求,不需要进行扩展。

final修饰变量时,表示该变量一旦被初始化便不可以被修改。

final修饰参数时,表示此参数在整个方法内不允许被修改。

1.2 final 用法展示

final 修饰类:


final class Animal {

}

final 修饰方法:


public class FinalExample {

    public final void sayHi() {

        System.out.println("Hi~");

    }

}

final 修饰变量:


public class FinalExample {

    private static final String MSG = "hello";

	//......

}

final 修饰参数:


public class FinalExample {

    public void sayHi(final String name) {

        System.out.println("Hi," + name);

    }

}

2.finally 介绍

finally则是 Java中保证重点代码一定要被执行的一种机制。​

我们可以使用 try-finally或者 try-catch-finally来进行类似关闭 JDBC连接、保证释放等动作。

2.1 finally 用法展示


try {

    // do something

} finally {

    // 一定会执行的代码

}

2.2 finally 扩展

有时候面试也会问finally是否一定会被执行?这是一个有诱导嫌疑的问题,正常情况下 finally 一定是会执行的,但有一个特殊情况 finally也是不会执行的,

特殊的实现代码和执行结果如下:

3.finalize 介绍

finalizeObject类中的一个基础方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收,但在 jdk 9中已经被标记为弃用的方法(deprecated)。

在实际开发中不推荐使用 finalize方法,它虽然被创造出来,但无法保证 finalize 方法一定会被执行,所以不要依赖它释放任何资源,因为它的执行极不“稳定”。在 JDK 9 中将它废弃,也很好的证明了此观点。​

3.1finalize 性能问题

finalize 除了执行“不稳定”之外,还有一定的性能问题。​

因为 finalize 的执行是和垃圾收集关联在一起的,一旦实现了非空的 finalize 方法,就会导致相应对象回收呈现数量级上的变慢,有人专门做过 benchmark,大概是 40~50 倍的下降。​

因为 finalize 被设计成在对象被垃圾收集前调用,这就意味着实现了finalize方法的对象是个“特殊公民”,JVM 要对它进行额外处理。finalize本质上成为了快速回收的阻碍者,可能导致你的对象经过多个垃圾收集周期才能被回收。

4、总结

finalfinallyfinalize从英文字面角度来看,看似很像,实则 3 者在 Java 中没任何关系。final 是用来修饰类、方法、变量和参数的关键字,被 final 修饰的对象不允许修改或替换其原始值或定义;finallyJava中保证重点代码一定要被执行的一种机制;finalize Object类中的一个基础方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收的,但其执行“不稳定”,且有一定的性能问题,已经在 JDK 9 中被设置为弃用的方法了。

到此这篇关于Javafinal,finally,finalize 有什么区别的文章就介绍到这了,更多相关final,finally,finalize的区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中final,finally,finalize 有什么区别

本文链接: https://www.lsjlt.com/news/158765.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中final,finally,finalize 有什么区别
    目录1.final 介绍1.1 final 用法说明1.2 final 用法展示2.finally 介绍2.1 finally 用法展示2.2 finally 扩展3.finaliz...
    99+
    2022-11-12
  • 在java中final、finally、finalize有什么区别
    java中final、finally、finalize的区别:final可以用来修饰类、方法和变量,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。finally则是异常处理的一部分,只能...
    99+
    2022-10-15
  • Java中final、finally、finalize的区别
    一、功能的区别 final:final关键词主要用于声明某个变量、方法或类是不可变的。一旦被final修饰,就不能被修改或重写。 finally:finally关键词主要用在异常处理中,无论try块中是否发生异常,fin...
    99+
    2023-10-29
    区别 final Java
  • Java中final,finally,finalize有哪些区别
    本篇内容主要讲解“Java中final,finally,finalize有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中final,finally,finalize有哪些区别”...
    99+
    2023-06-21
  • java中final、finally、finalize之间的区别
    区别如下:final: 修饰符(关键字),用于声明属性,方法和类,分别表示属性不可变, 方法不可覆盖,类不可继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改...
    99+
    2016-01-30
    java入门 java final finally finalize 区别
  • java 基础之final、finally和finalize的区别
    java 基础之final、finally和finalize的区别final可以修饰类,不能被继承;可以修饰方法,不能被重写;可以修饰变量,只能赋值一次。finally是try语句中的语句体,不能单独使用,用来释放资源;finalize是一...
    99+
    2023-05-31
    final finally finalize
  • Android源码中final关键字的用法及final,finally,finalize的区别
    hi 大家好,今日,天气剧变,非常冷,不想出门,于是给大家写了篇文章,关于android final关键字及final,finally,finalize的区别相关知识,具体详情...
    99+
    2022-06-06
    finalize final finally Android
  • Java中final、finally和finalize关键字有什么不同的地方
    这篇文章给大家介绍Java中final、finally和finalize关键字有什么不同的地方,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。final当这个关键字修饰一个类时,意味着他不能派生出新的子类,也就是说不能被...
    99+
    2023-05-31
    java finally final
  • java中finally有什么作用
    在Java中,finally关键字用于定义一个代码块,该代码块中的代码无论是否发生异常都会被执行。finally有以下几个作用:1....
    99+
    2023-10-08
    java
  • java中的finally有什么作用
    在Java中,finally是一个关键字,用于定义一个代码块,该代码块始终会被执行,无论是否发生异常。finally块通常用于释放资...
    99+
    2023-10-11
    java
  • java中 ${} 和 #{} 有什么区别
    目录前言1.功能不同1.1 ${} 的问题2.使用场景不同3.安全性不同3.1 使用 ${} 实现用户登录3.2 使用 #{} 实现用户登录总结前言 ${} 和 #{} 都...
    99+
    2022-11-13
  • Java中==和equals有什么区别
    本文小编为大家详细介绍“Java中==和equals有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中==和equals有什么区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。== 是 Java...
    99+
    2023-06-27
  • java web和java有什么区别
    java web和java的区别:1、开发层面,Java Web主要是Web应用程序的开发,Java则主要桌面应用程序或者命令行工具的开发;2、技术栈,Java Web需要掌握一系列相关的技术,Java则更偏向于Java核心语言的应用和开发...
    99+
    2023-08-09
  • java中a++和++a有什么区别
    在Java中,a++和++a是一种增量运算符,都用于递增变量a的值。它们的区别在于:1. a++是后缀递增运算符,先使用a的当前值,...
    99+
    2023-10-12
    java
  • java中arraylist和linkedlist有什么区别
    ArrayList和LinkedList都是Java中常用的集合类,它们的主要区别如下: 底层数据结构不同:ArrayList底...
    99+
    2023-10-26
    java
  • java中io和nio有什么区别
    java中io和nio有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queu...
    99+
    2023-06-14
  • Java中runnable和callable有什么区别
    这篇文章给大家分享的是有关Java中runnable和callable有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;...
    99+
    2023-06-14
  • java中sleep()和wait()有什么区别
    这篇文章主要介绍java中sleep()和wait()有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统...
    99+
    2023-06-14
  • java中PersistenceUnit与PersistenceContext有什么区别
    在Java中,PersistenceUnit和PersistenceContext是与Java持久化API(JPA)相关的两个重要注...
    99+
    2023-09-22
    java
  • java中ArrayList与LinkedList有什么区别
    区别如下:ArrayList和LinkedList都实现了List接口。但是在数据结构的实现上ArrayList是数组,LinkedList是双向链表,所以LinkedList比ArrayList会更耗内存,因为它一个节点要存两个引用,一个...
    99+
    2017-05-17
    java入门 java arraylist linkedlist
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作