Java中“final、finally、finalize”三者的区别

news2024/11/30 13:42:30

Java中的"final"、"finally"和"finalize"是三个不同的关键字,它们各自有不同的用途和含义:

1. final


   - 用于声明一个变量、方法或类是不可变的。
   - 被声明为final的变量一旦被初始化后,其值不能被改变。
   - 被声明为final的方法不能被子类覆盖(即不能被重写)。
   - 被声明为final的类不能被继承。

方法内部类使用方法内的变量时,此变量需要用finle修饰,如下图所示

如果常量是基本数据类型,不可以再修改。

如果常量是引用类型,不能再将其他对象赋给该引用,但可以使用该引用改变对象内部的属性。

2. finally


   - 与try-catch代码块一起使用,通常用于释放资源,如关闭文件流、数据库连接等。
   - 无论try块中的代码是否抛出异常,finally块中的代码总是会被执行。
   - finally块通常位于try-catch代码块的最后。

在Java中,try-catch-finally结构中的finally块可以被省略,但是这样做会失去一些重要的功能:

  1. 资源清理finally块通常用于执行清理操作,比如关闭文件流、释放数据库连接等。如果省略了finally块,这些资源可能不会被正确释放,导致资源泄露。

  2. 异常处理的完整性:即使try块中的代码抛出了异常,finally块也会执行。这确保了即使在异常情况下,一些必要的清理工作也能完成。

  3. 代码的健壮性:使用finally可以提高代码的健壮性。即使在发生异常的情况下,finally块中的代码也会执行,这有助于减少程序运行中出现的问题。

  4. 控制流程finally块可以作为控制流程的一部分,比如在某些情况下,你可能需要根据异常类型来决定是否执行某些操作。

  5. 最佳实践:即使没有异常需要处理,通常也建议保留finally块,以便执行必要的清理工作。

3. finalize


   - 是Object类的一个方法,可以被子类覆盖。
   - 用于在对象被垃圾收集器回收前进行资源清理。
   - 这个方法在对象的生命周期结束前由垃圾收集器调用,但调用时机不确定,因此不推荐依赖finalize来进行资源清理。
   - 从Java 9开始,finalize方法已经被标记为过时(deprecated),并建议使用其他方式来清理资源,如使用try-with-resources语句。

简单来说,final用于定义不可变的状态或行为,finally用于确保无论是否发生异常都会执行的代码块,而finalize是一个不推荐使用的方法,用于在对象被回收前进行清理。
 

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

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

相关文章

5、并发锁机制之synchronized

并发锁机制之synchronized i/i--引起的线程安全问题分析原因分析i的JVM字节码指令i--的JVM 字节码指令结论 解决方案 synchronized的使用加锁方式使用synchronized解决之前的共享问题方式一方式二 synchronized底层实现原理分析查看synchronized的字节码指令序列重量级锁实现之…

国富基金入股的关联性与奇瑞依赖症,大昌科技业务独立性引关注

《港湾商业观察》廖紫雯 日前,安徽大昌科技有限公司(以下简称:大昌科技)更新招股书并完成三轮问询,公司冲刺深交所创业板得到进一步进展。此前,2023年6月,大昌科技IPO获深交所受理,…

Qt使用开发板上的按键-思维导图-学习笔记-基于正点原子阿尔法开发板

Qt使用开发板上的按键 出厂内核设备树中注册的按键 I.MX6U设备树路径为arch/arm/boot/dts/imx6ull-14x14-evk.dts 如何看这个按键的键值对应键盘中的按键 键值宏定义是在<linux/input.h>头文件中 资源简介 ALPHA 开发板的 KEY0 按键原理图 应用实例 按键注册 正点…

浅谈【网络编程】之Unix与多路复用

目录 1、Unix域协议 2、多路复用 select poll / epol 谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注 没错&#xff0c;说的就是你&#xff0c;不用再怀疑&#xff01;&#xff01;&#xff01; 希望我的文章内容能对你有帮助&#xff0c;一起努力吧&#xff01;…

Spring理论知识(Ⅰ)——Spring分层结构,Spring模块数据访问与继承

1. Spring是什么&#xff1f; Spring是于2003 年兴起的一个轻量级的Java开发框架&#xff0c;由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层…

C和C++实现互调的方法

先解释一下C和C为什么不能直接互相调用&#xff1a; C支持函数重载&#xff0c;所以在编译的时候&#xff0c;函数名会发生变化。C语言不存在这个问题。那么在调用的时候&#xff0c;C找的是变化后的函数名&#xff0c;而C语言找的是原始的函数名。所以两者不能直接调用。 举个…

浅析KHD-厨帽检测算法从源码到实际应用的方案

厨帽检测算法&#xff0c;作为计算机视觉技术在食品安全领域的一项重要应用&#xff0c;其实际应用过程涉及多个方面。 厨帽检测算法主要基于深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;和目标检测框架&#xff08;如YOLO、Faster RCNN等&#xff…

部署webdav工具alist

1、下载部署包&#xff08;根据自己的环境下载对应包&#xff09; #进到指定目录下 cd /usr/local #下载部署包 wget https://github.com/alist-org/alist/releases/download/v3.35.0/alist-linux-arm64.tar.gz #加压包 tar zxf alist-linux-arm64.tar.gz2、进行部署安装 # 授…

海莲花活跃木马KSRAT加密通信分析

1.概述 自2023年8月至今&#xff0c;海莲花组织多次利用KSRAT远控木马对我国发起攻击。KSRAT通过HTTP协议与C&C服务器进行通信&#xff0c;每个样本都使用了不同的URL。其心跳包采用XOR算法进行加密&#xff0c;而控制指令包和数据回传包则使用了XOR以及“XORAES-128-CBC”…

Gaussian Splatting 在 Ubuntu22.04 下部署

代码:graphdeco-inria/gaussian-splatting (github) 论文:[2308.04079] 3D Gaussian Splatting for Real-Time Radiance Field Rendering (arxiv.org) 1. 禁用自带驱动 Nouveau Ubuntu 自带的显卡驱动,是非 Nvida 官方版。在后面装 CUDA 的时候,会报驱动不兼容问题。 1.…

浅析海思 3520DNVR源代码和网络硬盘录像机NVR全套源码方案

通过海思3520D实现NVR&#xff08;网络视频录像机&#xff09;芯片方案及硬盘录像机的算法功能&#xff0c;主要依赖于海思3520D芯片的强大性能和丰富的功能特性。 基于海思3520D芯片的NVR芯片方案&#xff0c;主要实现了以下功能&#xff1a; 视频接入与存储&#xff1a; 支…

Ultrascale/+的SYSMON获取温度值

XADC与SYSMON SYSMON结构框图 参考电压 有两种形式提供参考电压&#xff1a;外部供电和内部供电。 源语结构 温度计算 SYSMONE1 使用内部参考电压的话&#xff0c;计算公式如下&#xff1a; 通过ADC Code来计算温度的公式&#xff1a; 通过温度来计算ADC Code的公式&#x…

微信支付-h5、jsapi、native

1、微信支付-h5&#xff1a;适用于非微信客户端的浏览器微信支付&#xff1b; 2、微信支付-jsapi&#xff1a;适用于微信客户端的浏览器微信支付&#xff1b; 3、微信支付-native&#xff1a;适用于web端扫码支付。 服务商模式&#xff0c;相关配置如下&#xff1a; 1&…

设计模式(3)结构型模式

结构型模式 结构型模式1. Adapter&#xff08;适配器模式&#xff09;2. Bridge&#xff08;桥接模式&#xff09;3.Composite&#xff08;组合模式&#xff09;4.Decorator&#xff08;装饰模式&#xff09;5.Facade&#xff08;外观模式&#xff09;6.Flyweight&#xff08;享…

【html+css 绚丽Loading】 - 000010 三才定星轮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

定制开发AI智能名片商城小程序:融合销售策略与个人魅力的营销新路径

摘要&#xff1a;在数字化时代&#xff0c;营销策略的创新与个性化成为企业脱颖而出的关键。本文探讨了如何通过定制开发AI智能名片商城小程序&#xff0c;结合销售策略与个人魅力&#xff0c;实现用户心甘情愿购买产品的目标。通过分析用户行为、心理需求及市场趋势&#xff0…

东方博宜OJ 训练计划:数学知识及编程应用 习题集

啊啊啊&#xff0c;好久没发过题解啦&#xff0c;望各位大佬 RP 食用OJ : 东方博宜 网站&#xff1a;东方博宜 第一部分&#xff1a;素数 这里想必大家都很了解了&#xff0c;就不详细介绍了 &#xff08;实在太累了&#xff09; 在C中&#xff0c;素数是一个只能被1和自身整…

Chrome浏览器 本地js代码替换(Overrides)以及多场景出现 浏览器响应慢、卡顿等情况——问题解决

前言&#xff1a;作为一名前端开发者&#xff0c;chorme 的本地代码替换功能可以说非常收益的。例如&#xff1a;某一前端的线上版本出现问题了&#xff0c;如果不想跑本地代码调试&#xff0c;只是想先通过Chrome线上改代码的方式来定位问题并尝试修复可以说是非常方便。但是&…

2024 Testing Expo即将开幕,怿星科技展品大剧透!

汽车行业万众瞩目的 汽车测试及质量监控博览会&#xff08;Testing Expo China – Automotive&#xff09; 即将在上海开幕&#xff01; 2024年8月28日至30日 上海世博展览馆H1馆 怿星科技诚邀您莅临展位&#xff08;展位号2057&#xff09;&#xff01; 怿星科技将展出哪…

二叉树中的奇偶树问题

目录 一题目&#xff1a; 二思路汇总&#xff1a; 1.二叉树层序遍历&#xff1a; 1.1题目介绍&#xff1a; 1.2 解答代码&#xff08;c版&#xff09;&#xff1a; 1.3 解答代码&#xff08;c版&#xff09;&#xff1a; 1.4 小结一下&#xff1a; 2.奇偶树分析&#xf…