【JAVA】final、finally、finalize 有什么区别?

🍎个人博客:个人主页

🏆个人专栏:    JAVA   

⛳️ 功不唐捐,玉汝于成



目录

前言 

正文

final:

        finally:

finalize:

结语

我的其他博客


前言 

在Java中,finalfinallyfinalize 是三个看似相近但用途完全不同的关键字。深入理解它们的特性和用法,对于编写健壮、清晰的Java代码是至关重要的。这三者在Java语言中的不同领域发挥了各自独特的作用,分别用于声明不可变性、异常处理和对象生命周期管理。

正文

finalfinallyfinalize 是 Java 中三个不同的关键字,它们分别用于不同的上下文,有着不同的含义和用途。

  1. final

    • final 是一个关键字,用于修饰类、方法、变量等,表示不可改变的、最终的。

    • 当用于修饰一个类时,表示该类不能被继承,即为最终类。

    • 当用于修饰一个方法时,表示该方法不能被子类重写。

    • 当用于修饰一个变量时,表示该变量是一个常量,只能被赋值一次。

      final class FinalClass {
          // ...
      }
      
      class Example {
          final int constantValue = 42;
      
          final void finalMethod() {
              // ...
          }
      

finally

  • finally 是一个关键字,用于结构化异常处理中的 try-catch-finally 语句块。

  • 无论是否发生异常,finally 语句块中的代码都会被执行,通常用于释放资源、关闭文件等操作。

    try {
        // some code that may throw an exception
    } catch (Exception e) {
        // handle the exception
    } finally {
        // code in this block will always be executed
        // e.g., close resources, cleanup, etc.
    }
    

finalize

  • finalize 是一个方法,属于 Object 类中的一个方法。它在对象被垃圾回收之前被调用,允许对象在销毁之前执行一些清理操作。

  • 注意:Java 9 引入了垃圾回收器的改进,弃用了 finalize 方法,并推荐使用 Cleaner API 进行清理操作。

    class MyClass {
        // ...
    
        @Override
        protected void finalize() throws Throwable {
            try {
                // cleanup code before object is garbage collected
            } finally {
                super.finalize();
            }
        }
    }
    

区别总结:

  • final 是一个修饰符,用于修饰类、方法、变量,表示最终的、不可改变的。
  • finally 是一个关键字,用于异常处理中的 try-catch-finally 结构,确保一段代码块无论是否发生异常都会被执行。
  • finalizeObject 类中的一个方法,用于在对象被垃圾回收之前执行一些清理操作。在现代Java中,它已经被弃用,不推荐使用,而推荐使用 Cleaner API 进行资源清理。

结语

在编写Java代码时,正确地使用 final 修饰符可以使代码更加稳定,finally 关键字可以确保资源得到适当的清理,而 finalize 方法(虽然已被弃用)在一定情况下可以用于对象的清理操作。这三者相辅相成,为我们的代码提供了更高的可读性、可维护性和性能。在日常编程中,善用这三者,能够使我们的代码更加健壮且容易理解。希望通过对它们的深入理解,你能够在实际项目中更加灵活地运用这些关键字,写出更加优雅的Java代码。

我的其他博客

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅-CSDN博客

【软件工程】融通未来的工艺:深度解析统一过程在软件开发中的角色-CSDN博客

【软件工程】走进瀑布模型:传统软件开发的经典之路-CSDN博客

【软件工程】走近演化过程模型:软件开发的不断进化之路-CSDN博客

【软件工程】漫谈增量过程模型:软件开发的逐步之道-CSDN博客

【Spring】理解IoC与AOP:构建灵活而模块化的软件架构-CSDN博客

【MySQL】数据库并发控制:悲观锁与乐观锁的深入解析-CSDN博客

【MySQL】数据库规范化的三大法则 — 一探范式设计原则-CSDN博客

【MySQL】数据库中为什么使用B+树不用B树-CSDN博客

【MySQL】SQL优化-CSDN博客

【MySQL】脏读、不可重复读、幻读介绍及代码解释-CSDN博客

【MySQL】多表连接查询-CSDN博客

 【MySQL】数据库索引(简单明了)-CSDN博客

【Web开发】深度剖析RBAC:概念、实现方法、优势及在Web应用中的应用-CSDN博客

【Mybatis】深入学习MyBatis:高级特性与Spring整合-CSDN博客

【Mybatis】深入学习MyBatis:CRUD操作与动态SQL实战指南-CSDN博客

【MySQL】数据库索引(简单明了)-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对话北京菜百电子商务有限公司总经理张梦轩:品牌自播引领直播的时代即将来临

整理 | 飞族 编辑 | 渔舟 出品|极新&北京电子商务协会 作为一种新型又高效的场域,在直播电商场景下,品牌通过尝试运用AI、VR、数字人等新技术,制作专业内容,去更好地吸引和打动消费者,促进业…

美信科技盘古信息智能车间项目成功验收,打造电子元器件数字化工厂标杆

作为一家深耕于磁性元器件领域近二十年的制造企业,广东美信科技股份有限公司(以下简称“美信科技”)始终秉承着“为电磁赋能,创工业至美”的企业使命,为中国制造卓越发展贡献力量。在当今数字化时代,制造企…

竞赛保研 基于深度学习的人脸识别系统

前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/…

导轨安装DIN12 IPO OC系列一路输入两路输出模拟信号隔离分配器4-20mA/0-5V/0-10V/0-20mA/0-±10mA/0-±20mA

概述 导轨安装DIN12 IPO OC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号隔离测控的行业。此系列产品内部采用了线性光电隔离技术相比电磁隔离具…

linux网络配置

一、查看Linux基础得网络设置 1.网关——route -n 2.IP地址——ifconfig 或 ip a ethtool -p ens33 让ens33网卡快速闪烁,分辨网线对应哪个网卡 3.DNS服务器——cat /etc/resolv.conf 4.主机名——hostname 5.路由——route 6.网络连接状态——ss 或 net…

python 多线程 守护线程

daemon线程:守护线程,优先级别最低,一般为其它线程提供服务。通常,daemon线程体是一个无限循环。如果所有的非daemon线程(主线程以及子线程)都结束了,daemon线程自动就会终止。t.daemon 属性,设…

【STM32F103】RCC复位和时钟控制

前言 之前介绍外设的时候总是没有提到RCC,但其实我们使用STM32的外设之前都需要做的一步就是打开外设时钟。原本想着没什么可说的,就是用什么外设的时候就在开头加一行代码打开外设时钟就好了。直到最近写到了TIM定时器,我才开始觉得应该说一…

如何查询关键词的KD与搜索量

随着海外贸易的不断发展,越来越多的小伙伴们从事外贸行业,但是随着面对有限的市场和激烈的竞争,很多从业者往往流量的来源比较单一,那就是付费流量,包括谷歌ads,facebook等一些投流广告。广告的好处是当你付…

7.3 CONSTANT MEMORY AND CACHING

掩模数组M在卷积中的使用方式有三个有趣的属性。首先,M阵列的大小通常很小。大多数卷积掩模在每个维度上都少于10个元素。即使在3D卷积的情况下,掩码通常也只包含少于1000个元素。其次,在内核执行过程中,M的内容不会改变。第三&am…

基于Listener实现在线人数监测的简单案例

一、需求 只要有用户登录到服务器,就记录在线用户1。 二、使用到的Listner介绍 1、HttpSessionListener 监听器 当一个HttpSession刚被创建或者失效(invalidate)的时候,将会通知HttpSessionListener监听器。 方法声明功能介绍v…

目标检测-One Stage-YOLOv5

文章目录 前言一、YOLOv5的网络结构和流程YOLOv5的不同版本YOLOv5的流程YOLOv5s的网络结构图 二、YOLOv5的创新点1. 网络结构2. 输入数据处理3. 训练策略 总结 前言 前文目标检测-One Stage-YOLOv4提到YOLOv4主要是基于技巧的集成,对于算法落地具有重大意义&#x…

SpringIOC之support模块EmbeddedValueResolutionSupport

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

国货美妆未来发展方向在哪儿?媒介盒子分析

在消费结构升级,审美观念和悦己意识增强等多种因素的推动下,国内化妆品消费持续增长,那么国货美妆品牌在2024年的发展重心在哪儿?应该如何通过合适的营销提高品牌曝光,提高市场竞争力呢?接下来就让媒介盒子…

【liunx】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题

线程池单例模式STL,智能指针和线程安全其他常见的各种锁读者写者问题 1.线程池2.线程安全的单例模式3.STL,智能指针和线程安全4.其他常见的各种锁4.读者写者问题 喜欢的点赞,收藏,关注一下把! 1.线程池 目前我们学了挂起等待锁、条件变量、信…

一氧化碳中毒悲剧频发:探究道合顺电化学传感器促进家庭取暖安全

1月6日,陕西省榆林市发生了一起疑似因使用煤炭炉取暖中毒事件。通报称,经公安部门现场调查,并结合医院救治情况,初步判断5人属一氧化碳中毒,其中4人抢救无效死亡,令人痛心。 一般来说,这种在日…

如何在企业中实施自适应人工智能?

人工智能不再是企业的选择。很快,它也将不再是一个区分因素。商业中的适应性人工智能正在改变格局。根据最近的统计数据,95%的企业以上都在追求人工智能。 因此,为了确保你拥有竞争优势,你必须期待先进的人工智能选项。适应性就是…

如何使用内网穿透实现iStoreOS软路由公网远程访问局域网电脑桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是:** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能,也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

Elasticsearch基本操作之文档操作

本文来说下Elasticsearch基本操作之文档操作 文章目录 文档概述创建文档示例创建文档(生成随机id)创建文档(自定义唯一性标识) 查看文档示例根据主键查看文档查看所有文档 修改文档示例全局修改文档局部修改文档 删除文档示例根据文档的唯一性标识删除文档条件删除文档 本文小结…

LabVIEW在旋转机械故障诊断中的随机共振增强应用

在现代工业自动化领域,准确的故障诊断对于保障机械设备的稳定运行至关重要。传统的故障检测方法往往因噪声干扰而难以捕捉到微弱的故障信号。随着LabVIEW在数据处理和系统集成方面的优势日益凸显,其在旋转机械故障诊断中的应用开始发挥重要作用&#xff…

OpenWrt智能路由器Wifi配置方法 目前最安全的WPA2-PSK/WPA3-SAE wifi加密配置方法

OpenWrt默认Wifi是 没有启用, 就算是启用了也是没有任何密码的, 如果需要设置密码需要我们手动进行配置, 配置方式如下: 登录路由器 http://openwrt.lan/ 默认用户名密码 root/password 然后找到 Network --> Wireless 如下图: 点击 Edit --> 然后选择 Interface Co…