Java中 final、finally、finalize 有什么区别?

news2024/9/22 21:27:13

1、典型回答

final、finally、finalize 是 Java 中三个不同的关键字,它们除了长得像之外,其他的(作用和含义)完全不同。

它们三个的区别就好像:雷、雷锋、雷峰塔之间的区别。(是三个完全不同的东西)

final、finally、finalize的区别如下:

  1. final:表示不可变性,用于修饰类、方法和变量 ,当用于类时,表示该类不能被继承;当用于方法时,表示该方法不能被子类重写(覆盖);当用于变量时,表示该变量的值不能被修改(成为常量)。final 关键字提供了不可变性的特性,用于约束一些不希望被修改或继承的类、方法和变量
  2. finally:用于定义在 try-catch 结构之后的一个代码块。无论是否有异常抛出,finally 块中的代码都会被执行。它通常用于释放资源或执行一些必须在代码块结束时执行的清理工作,例如关闭数据库连接、释放文件锁等
  3. finalize:Object 类的一个方法,用于在对象被垃圾回收之前执行一些清理工作。Java 允许在对象被垃圾回收之前执行特定的操作,finalize方法就提供了这样的机制。但需要注意的是,由于垃圾回收的时机是不确定的,finalize方法的执行时间也是不确定的,因此一般不推荐使用 finalize 方法,并且在 JDK 9 开始被标记为 deprecated(弃用)。

所以,final 是用于修饰类、方法和变量,表示不可变性;finally保证关键代码块无论是否捕获到异常,都会被执行;finalize是Object 类的方法,用于在对象被垃圾回收之前进行清理

2、全面剖析

final用于修饰类、方法和变量,具体使用如下:

public static final String USERNAME = "一曲无忧";

finally 用于定义在 try-catch 结构之后一定会执行的代码块,具体使用如下:

​​​​​​​

finalize 是 Object 类的一个方法,用于在对象被垃圾回收之前执行一些清理工作,具体使用如下:

3、知识扩展

3.1、被 final 修饰的变量具有哪些好处?

  1. 不可变性:final修饰的变量在初始化之后就不能再被修改。这样可以确保变量的值始终保持不变,避免了意外或不必要的修改,提高代码的可靠性和可维护性
  2. 安全性:被 final 修饰的变量是不可变的,因此它在多线程环境下是线程安全的
  3. 性能优化:由于 final 变量的值不可变,编译器在编译时就可以进行一些优化,如在循环中提前计算表达式的结果、缓存变量值等,从而提高程序的运行效率
  4. 不存在可见性问题:被 final 修饰的变量具有强有力的可见性保证。当一个线程在写 final 变量时,其他线程将会立即看到该变量的最新值,而不会出现脏读或可见性问题
  5. 代码可读性和维护性:通过使用 final 修饰变量,可以明确地表示变量是一个常量,不应该被修改。这能够提高代码的可读性,让其他开发人员更容易理解和维护代码

3.2被 final 修饰的变量属性,在创建时必须要赋值么

被 final 修饰的变量可以有两种赋值方式:

  1. 创建时直接赋值
  2. 在构造方法中进行赋值

如果不满足以上任意一个条件,则程序会报编译错误

因此,被 final 修饰的变量,在创建时可以不用赋值,在构造方法中赋值,程序依然可以正常运行

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

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

相关文章

【动态规划】C++算法312 戳气球

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 LeetCode312 戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums…

基于springboot+vue实现教学改革项目管理系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现教学改革项目管理系统演示 摘要 教学改革行业的不断发展才能让更多的学生受益,那么教学改革的老师们对于教改可谓是花费了很大的心血。这种心血不仅仅在教学方式方法上,而且还是在于线下的流程审批和审核及教学改革的项目资料整理…

便携式隧道能见度仪的使用

TH-BN6随着交通基础设施的不断发展,隧道作为连接城市、山区等关键地段的交通要道,发挥着越来越重要的作用。然而,隧道内的能见度问题一直是困扰隧道运营者的难题。为了保障隧道通行安全,便携式隧道能见度仪应运而生。 二、便携式隧…

解忧杂货铺(①):必备网站资源

目录 在线工具 简单教程 程序员导航网 中国大学 青柠 廖雪峰的官方网站 在线工具 各类工具 https://tool.lu/ 简单教程 简单教程 https://www.twle.cn/ 程序员导航网 程序员导航网 https://hao.panziye.com/ 中国大学 中国大学MOOC网 https://www.icourse163.org/ 青…

Python 对Excel工作表中的数据进行排序

在Excel中,排序是整理数据的一种重要方式,它可以让你更好地理解数据,并为进一步的分析和报告做好准备。本文将介绍如何使用第三方库Spire.XLS for Python通过Python来对Excel中的数据进行排序。包含以下三种排序方法示例: 按数值…

数字脉搏:互联网的演进与社会脉络

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

深入理解快速排序

一、快速排序 快速排序是冒泡排序的一种改进算法,相比于冒泡排序效率更优。 算法过程分析: 通过采用分治策略,围绕一个 x 将原始数组划分为两个子数组,使得前一个子数组的元素≤ x ≤ 后一个子数组元素,对两个子数组进…

诗词生成之setting

先上代码: # 禁用词,包含如下字符的唐诗将被忽略 DISALLOWED_WORDS [(, ), (, ), __, 《, 》, 【, 】, [, ]] # 句子最大长度 MAX_LEN 64 # 最小词频 MIN_WORD_FREQUENCY 8 # 训练的batch size BATCH_SIZE 16 # 数据集路径 DA…

如果电脑缺少dll文件怎么解决?如何快速解决dll丢失问题

最近有小伙伴问电脑老是缺少dll文件,这种问题到底要怎么去解决呢?其实这种现象是正常的,为啥说正常呢,下面我们会给大家详细的讲解dll为啥会缺少,然后还会讲解电脑缺少dll文件怎么解决的方法,好了&#xff…

Day17:开发流程、开发社区首页、项目的调试、版本控制

开发流程 一次请求过程 先开发DAO,再开发service,再开发controller 开发社区首页的分布实现 显示前10个帖子 创建帖子数据表 CREATE TABLE discuss_post (id int NOT NULL AUTO_INCREMENT,user_id varchar(45) DEFAULT NULL,title varchar(100) DEF…

社交创新的先锋:探秘Facebook背后的故事与智慧

起源与初创阶段 Facebook的故事始于2004年,由马克扎克伯格(Mark Zuckerberg)、埃迪华索伦(Eduardo Saverin)、安德鲁麦克卡拉姆(Andrew McCollum)、克里斯休斯(Chris Hughes&#x…

Java进程CPU高负载排查

Java进程CPU高负载排查步骤_java进程cpu使用率高排查_YouluBank的博客-CSDN博客 【问题定位】使用arthas定位CPU高的问题_arthas cpu高_秋装什么的博客-CSDN博客 CPU飙升可能原因 CPU 上下文切换过多。 对于 CPU 来说,同一时刻下每个 CPU 核心只能运行-个线程&…

JAVA实战开源项目:生活废品回收系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

最新APP开发趋势,探索2024年的创新与挑战

2024年,移动应用市场仍然是创新与变革的焦点。随着技术的不断发展和用户需求的不断变化,APP开发行业也在不断演进。本文将深入探讨2024年最新的APP开发趋势,以及所带来的创新与挑战,并介绍虎克技术公司提出的解决方案。 1. 强调用…

AIGC笔记--Maya提取和修改FBX动作文件

目录 1--Maya数据解析 2--FBX SDK导出6D数据 3--6D数据映射和Maya可视化 完整项目代码:Data-Processing/FBX_SDK_Maya 1--Maya数据解析 在软件Maya中直接拖入FBX文件,可以播放和查看人体各个骨骼关节点的数据: 对于上图来说,…

【傻瓜文档】鼎利测试软件Pilot Pioneer-① Pioneer界面介绍

Pioneer界面分布 工具栏 自定义快速访问工具栏 根据需求,自行制定工具栏选项 菜单栏 文件 语言 配置 工具 工具栏的补充内容,常用的有:合并/分割数据、GPS轨迹补偿等等。 帮助

亿发定制:中小型生产制造工厂为什么需要建设企业信息化管理?

随着互联网行业的迅猛发展,越来越多的加工制造业企业将互联网作为核心枢纽,这一关键核心枢纽即为企业信息化管理。 在企业信息化管理中,主要包括三个关键方面:企业变革过程管理、企业运作管理,以及信息技术、信息资源…

【YUNBEE云贝技术分享】如何定位postgreSQL数据库中未被使用过的索引

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 前言 在生产环境上,由于不规范的优化措施,数据库中可能存在大量的索引,并且相当一部分的索引…

jeecgboot 开放页面权限,免登录访问

前端需要配置路由和添加白名单 1、配置路由 2、 在permission.js里,把刚才的路由添加到白名单 3、 后端需要把该页面涉及到的接口排除权限拦截 比如我这个页面涉及到两个接口: 那么就在后端的excludeUrls把这两个接口加进去。 前端后端都设置好了&…