当前位置: 首页 > news >正文

Java中final、finally和finalize方法的区别

        简而言之,final关键字可以与变量、方法和类一起使用,并且对它们都有不同的含义。finally是另一个 Java 关键字,与try catch throw 和 throws一起用于异常处理Finalize()是 Java 中的一个特殊方法,垃圾收集器在回收符合 GC 条件的对象之前会调用该方法

在这篇 Java 问题文章中,我们将比较Final、finally 和 Finalize ,并重点介绍Java 中的Final 、finally和Finalize方法之间的一些重要区别 。

Java 中的final、finally、finalize

1、final关键字可以与Java 中的变量、方法和类一起使用。如果你将一个变量设置为final ,你就不能改变它的值,它就像一个常量。Final变量在创建时初始化,但空白 Final 变量在构造函数中初始化的情况除外。如果在 Java 中将方法设为 Final,则无法在子类中 重写它。如果将一个类设为最终类,则意味着它不能被子类化。使一个类自动使其所有方法成为final,有时出于安全原因需要这样做,这就是为什么String在Java中是final的原因之一。 简而言之,final 与finally或finalize关键字完全无关。Final 关键字还有助于编写 Immutable 类,这对于设计线程安全的多线程系统和减少同步量至关重要。

2、现在让我们看看Java 中的finally 是什么?正如所说,finally与try和catch一起用于异常处理。根据Java编程语言的规则,对于异常处理,至少需要catch或finally块。最后,该块比 catch 有一个特殊的优点,即无论是否抛出异常, 它都保证被执行。这使得它成为关闭系统资源(如InputStream或OutputStream )的理想位置 ,这是释放稀缺文件描述符所必需的。在finally 块中关闭流、网络连接、数据库连接是Java 中良好的编码实践。 顺便说一句,从 Java 7 开始,可以使用带有资源块的 try来自动关闭资源。由于finally在大多数情况下都保证被执行,因此它也产生了一些棘手的Java问题,其中finally不执行,例如从finally块返回值,从try块调用System.exit等。finally块总是执行,除了如果 JVM 死掉,即调用System.exit() 。 
 
同样,finally 与Final或Finalize没有任何关系。
3、现在让我们看看什么是finalize()方法,finalize()是由垃圾收集线程在收集符合条件的对象之前调用的。这是对象执行任何清理的最后机会,但由于不能保证是否会调用 Finalize(),因此在调用 Finalize 之前保留资源是不好的做法。 
概况
所以,final 、finally和finalize都是不同的关键字,它们用于不同的目的。它们之间唯一的相似之处是它们都是Java编程语言关键字,除了final 、finalize和finally之外,它们是完全不同的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python实现张万森下雪了的效果
  • Linux 编写脚本定时发送天气预报
  • count distinct在spark中的运行机制
  • 大数据应用发展史:从搜索引擎时代到机器学习时代
  • AI赋能金融创新:技术驱动的未来金融革命
  • 水库大坝安全监测设计与施工经验
  • Golang 通用代码生成器仙童已发布 2.4.0 电音仙女尝鲜版二及其介绍视频,详细介绍了三大部分生成功能群
  • 城市分站优化系统源码:提升百度关键排名 附带完整的搭建教程
  • 2022第十届中国互联网测试开发大会(MTSC2022)-核心PPT资料下载
  • IOC推导和本质
  • MySQL聚簇索引和非聚簇索引的区别
  • 最新AI系统ChatGPT网站H5系统源码,支持AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图
  • Vue3-31-路由-RouterView的name属性的作用
  • 【STM32】TIM1在电机应用时的注意事项
  • CGAL的三角曲面网格变形
  • 【Linux系统编程】快速查找errno错误码信息
  • docker python 配置
  • JAVA之继承和多态
  • MySQL-事务管理(基础)
  • Mysql优化
  • mysql中InnoDB引擎中页的概念
  • Python进阶细节
  • ReactNative开发常用的三方模块
  • 第2章 网络文档
  • 近期前端发展计划
  • 京东美团研发面经
  • 盘点那些不知名却常用的 Git 操作
  • 前端面试之CSS3新特性
  • 为什么要用IPython/Jupyter?
  • 怎么将电脑中的声音录制成WAV格式
  • 昨天1024程序员节,我故意写了个死循环~
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (done) 两个矩阵 “相似” 是什么意思?
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Java入门)学生管理系统
  • (k8s中)docker netty OOM问题记录
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (五)关系数据库标准语言SQL
  • (一)Java算法:二分查找
  • (一)SvelteKit教程:hello world
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)ABI是什么
  • (转)Mysql的优化设置
  • (转)关于pipe()的详细解析
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net Web窗口页属性
  • .net(C#)中String.Format如何使用
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net程序集学习心得
  • .sh