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之外,它们是完全不同的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/585595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-5-切入点的高级使用

Spring提供了两个额外的Pointcut实现,分别是ComposablePointcut和ControlFlowPointcut,它们提供了所需的灵活性。 使用控制流切入点 由ControlFlowPointcut类实现的Spring控制流切入点类似于许多其他AOP实现中可用的cflow构造,尽管功能上没有那么强大。…

yolov5简单手势识别

实验目的 实验要求只需要识别五个简单的手势即可,分别对应的一下五个动作 动作对应标签名点赞goodOKok单手比心love数字 5five数字8eight 使用yolov5实现目标检测功能,有一下几个主要步骤 环境配置(包括conda、labelimg、yolov5的下载&am…

SAP CO系统配置-与PS集成相关配置(机器人制造项目实例)

维护分配结构 配置路径 IMG菜单路径:控制>内部订单>实际过帐>结算>维护分配结构 事务代码 OKO6 维护结算参数文件 定义利润分析码

Go语言中的包管理工具之Go Vendor的使用

GoLang 中常用的包管理的方式 常用的有三种 Go PathGo VendorGo Modules 关于 Go Vender 1 )概述 在2015年的时候,我们的另一个包管理工具Go Vendor就诞生了它诞生于 2015.8.19 ,是在Go的 1.5 版本当中引入的,它默认是关闭的我…

焊点保护,选择使用焊点保护UV胶的优势有哪些?

快速固化 UV胶在受到紫外光照射后能够迅速固化,使得焊点保护的过程更加迅速。这种快速固化的特性有助于提高生产效率,减少等待时间。 精准涂覆 由于UV胶在受到紫外光照射后才开始固化,操作者有足够的时间来进行精准的涂覆和调整位置。这使…

SpringBoot 请求参数

文章目录 一、简单参数实体参数数组集合参数日期参数Json参数路径参数 一、简单参数 原始方式 在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。 SpringBoot方式 1.参数名与形参变量名相同,定义形参即可接收参数。…

云短信平台优惠活动 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 某云短信厂商,为庆祝国庆,推出充值优惠活动。 现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。 输入描述 第一行客户预算M,其中 0<=M<=100 第二行给出售价表,P1,P2,… Pn, 其中 1<=n<=100…

MySQL 索引详解

什么是索引 索引是帮助MySQL高效获取数据的数据结构。查看索引可以使用SHOW INDEX或EXPLAIN语句。 索引的工作原理 索引就像书的目录一样,当要查找书中的内容时,首先查看目录,通过目录可以快速定位内容的位置。 MySQL索引的工作方式也是一样的。当SQL语句执行查询时,优化器…

python统计学-矩估计法、极大似然估计法?

介绍 矩估计法 矩估计法是一种参数估计方法&#xff0c;通过使用样本矩来估计总体矩&#xff0c;从而得到参数的估计值。它基于样本观测值与总体矩之间的对应关系进行参数估计。 极大似然估计法 极大似然估计法是一种参数估计方法&#xff0c;通过最大化似然函数来确定参数…

命令行创建Vue项目

Vue项目创建 1. 打开UI界面 在命令行中&#xff0c;执行如下指令&#xff1a; vue ui 2. 打开项目管理器 3. 创建项目 创建项目的过程&#xff0c;需要联网进行&#xff0c;这可能会耗时比较长的时间&#xff0c;请耐心等待。 windows的命令行&#xff0c;容易卡顿&#xff0c…

Android笔记(二十二):Paging3分页加载库结合Compose的实现网络单一数据源访问

Paging3 组件是谷歌公司推出的分页加载库。个人认为Paging3库是非常强大&#xff0c;但是学习难点比较大的一个库。Paging3组件可用于加载和显示来自本地存储或网络中更大的数据集中的数据页面。此方法可让移动应用更高效地利用网络带宽和系统资源。在具体实现上&#xff0c;Pa…

[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中

目背景 常见的MySQL、Oracle、SQLServer等数据库都是基于C/S架构设计的&#xff0c;即&#xff08;客户端/服务器&#xff09;架构&#xff0c;也就是说我们对数据库的操作相当于一个客户端&#xff0c;这个客户端使用既定的API把SQL语句通过网络发送给服务器端&#xff0c;MyS…

磁盘阵列raid

一、服务器硬件 cpu 、 主板 、内存、硬盘、网卡、电源、raid卡、风扇、远程管理卡 二、硬盘尺寸 目前生产环境中主流的两种类型硬盘 3.5寸 和 2.5寸 硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器&#xff0c;但是3.5寸没法转换成2.5寸 1.如何在服务器上…

前端三件套html/css/js的基本认识以及示例程序

简介 本文简要讲解了html,css,js.主要是让大家简要了解网络知识 因为实际开发中很少直接写html&css,所以不必过多纠结,了解一下架构就好 希望深度学习可以参考MDN和w3school HTML 基础 HTML (Hyper Text Markup Language) 不是一门编程语言,而是一种用来告知浏览器如…

共享单车之数据存储

文章目录 第1关&#xff1a;获取工作簿中的数据第2关&#xff1a;保存共享单车数据 第1关&#xff1a;获取工作簿中的数据 相关知识 获取工作簿中的信息&#xff0c;我们可以使用Java POI&#xff08;POI是一个提供API给Java程序对Microsoft Office格式档案读和写的功能&#…

前端DApp开发利器,Ant Design Web3 正式发布 1.0

在介绍 Ant Design Web3 之前,先简单说说 Web3 DApp(去中心化应用)。DApp 可以说是除了 AI 应用外当下最受前端独立开发者青睐的应用了。当然,在 ChatGPT 还没有火的时候,Web3 DApp 才是最火的。因为通过一个连接区块链的 DApp(去中心化应用)你可以获得如下能力: 💰交…

学习笔记:R语言基础

文章目录 一、R语言简介二、选择R的原因三、R基本数据对象&#xff08;一&#xff09;向量&#xff08;二&#xff09;矩阵&#xff08;三&#xff09;数组&#xff08;四&#xff09;因子&#xff08;五&#xff09;列表&#xff08;六&#xff09;数据框&#xff08;七&#…

07-项目打包 React Hooks

项目打包 项目打包是为了把整个项目都打包成最纯粹的js&#xff0c;让浏览器可以直接执行 打包命令已经在package.json里面定义好了 运行命令&#xff1a;npm run build&#xff0c;执行时间取决于第三方插件的数量以及电脑配置 打包完之后再build文件夹下&#xff0c;这个…

【unity学习笔记】配置模型,实现眨眼和口型效果

一、vriod捏人 1.在vroidstudio软件中捏人 2.导出模型&#xff08;.vrm) 二、vrid导入unity的插件 1.在Git上搜索、打开univrm。 2.找到release页面找到合适的插件版本。&#xff08;VRM-0.116.0_0f6c&#xff09; 3.将univrm导入到工程中&#xff08;assets&#xff09;。 三…

某药业集团人才评价中心组织定位与职能描述

——科学梳理工作界面&#xff0c;全面提升工作效率 【导读】 很多公司存在部门职能不清&#xff0c;部门职能重叠的同时还有一部分职能无人承担&#xff0c;各部门、各岗位之间权责不清&#xff0c;相互推诿的现象严重&#xff0c;员工执行力差&#xff0c;整体部门工作效率…