小米面试题解析:深入剖析final、finally、finalize的区别

news2024/9/22 10:04:12

大家好,我是你们的小米!今天我要和大家聊一聊在编程中常常让人迷惑的三个词:final、finally 和 finalize。这些词看似相似,但实际上在Java编程中有着截然不同的作用。如果你在面试中遇到相关问题,可千万别慌张,接下来,我将为大家揭开这三个概念的神秘面纱!

final

我们先从final开始。在Java中,final是一个关键字,它可以用于修饰类、方法和变量。那么,不同的修饰对象又代表着什么呢?

final 修饰类:当我们用final修饰一个类时,表示这个类是不可继承的,也就是说其他类不能再去扩展它。这样做的好处是确保类的稳定性和安全性,防止被继承的类在子类中被修改、扩展或者篡改。例如:

 

final 修饰方法:当我们用final修饰一个方法时,表示这个方法是不可被子类重写的。这在某些情况下是非常有用的,比如一个类中的某个方法已经是最终实现,不希望被子类修改。例如:

 

final 修饰变量:如果我们用final修饰一个变量,表示这个变量是一个常量,一旦被赋值后就不能再改变。这样的好处是确保变量的值不会意外被修改,增加代码的可读性和安全性。例如:

 

finally

接下来,我们说说finally。在Java中,finally也是一个关键字,它通常与try-catch结构一起使用。那么,finally到底有什么作用呢?

在异常处理中,我们经常使用try-catch块来捕获并处理异常。有时候,我们希望不管异常是否发生,都能执行一段代码,比如释放资源、关闭文件等。这时候就可以使用finally块。不论是否捕获到异常,finally中的代码都会被执行。例如:

 

总结一下,finally块是用于保证在任何情况下都执行特定代码的一种机制,尤其在异常处理中尤为重要。

finalize

最后,我们来说说finalize。finalize是Object类中的一个方法,在Java 9以后被标记为过时(deprecated)。那么,这个方法有什么特殊之处呢?

在Java中,每个对象都有一个finalize方法,它是由垃圾回收器在回收对象之前调用的。也就是说,当一个对象即将被回收时,会先调用它的finalize方法,然后才真正回收内存。这个方法允许对象在被销毁之前进行一些清理工作,比如关闭资源、释放连接等。但是,由于finalize方法的调用时机不确定且不可靠,所以它并不适合用于重要的资源管理和清理工作。

从Java 9开始,推荐使用try-with-resources或者手动管理资源(比如使用try-catch-finally块)来替代finalize方法,以确保资源的正确释放和管理。

 

通过使用AutoCloseable接口和try-with-resources,我们可以更好地管理资源,避免了finalize方法不确定性带来的问题。

总结

  • final用于修饰类、方法和变量,分别表示不可继承、不可重写和常量。
  • finally通常与try-catch结构一起使用,用于保证特定代码在任何情况下都会被执行,通常用于资源释放等收尾工作。
  • finalize是Object类中的方法,已经在Java 9后过时,不推荐使用,而是推荐使用try-with-resources来管理资源。

END

希望通过本次的技术分享,大家对final、finally和finalize有了更清晰的认识。编程之路上,遇到困惑,就让我们一起努力,共同成长!如果你觉得这篇分享对你有帮助,欢迎点赞、评论和转发,让更多的小伙伴们一起加入我们,共同进步!感谢大家的支持,我们下期再见!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”!

 

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

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

相关文章

ppt怎么压缩到10m以内?分享好用的压缩方法

PPT是一种常见的演示文稿格式,有时候文件过大,我们会遇到无法发送、上传的现象,这时候简单的解决方法就是压缩其大小,那怎么才能将PPT压缩到10M以内呢? PPT文件大小受到影响的主要因素就是以下几点: 1、图…

Mac下certificate verify failed: unable to get local issuer certificate

出现这个问题,可以安装证书 在finder中查找 Install Certificates.command找到后双击,或者使用其他终端打开 安装完即可

面试还不懂 Redis 与 MySQL 数据一致性,看这篇就够了

1. 什么是数据库与缓存一致性 数据一致性指的是: 缓存中存有数据,缓存的数据值 数据库中的值; 缓存中没有该数据,数据库中的值 最新值。 反推缓存与数据库不一致: 缓存的数据值 ≠ 数据库中的值; 缓…

【雕爷学编程】MicroPython动手做(11)——搭建掌控板IDE开发环境四种

为了能够打好基础,系统学习MicroPython,特地入手了二块掌控板 知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通…

数字人解决方案——NeRF实现实时对话数字人环境配置与源码

前言 1.这是一个能实时对话的虚拟数字人demo,使用的是NeRF(Neural Radiance Fields),训练方式可以看看我前面的博客。 2.文本转语音是用了VITS语音合成,项目git:https://github.com/jaywalnut310/vits . 3.语言模型是用了新开…

Oracle 最高安全架构

​在当今世界中,数据库是存储敏感信息的宝贵资料库,攻击者总是在寻找目标。这导致网络安全威胁的增加,因此有必要采取适当的保护措施。Oracle Maximum Security Architecture(MSA)就是一种提供数据库端到端安全的解决方…

YOLOv6 论文学习

1. 解决了什么问题? 吸收了学术圈和工业界最新的目标检测方法,包括网络结构、训练策略、测试技巧、量化和优化方法。 作者有如下几点发现: 目前还没有人深入研究 RepVGG 重参数化对检测任务的影响。直接缩放 RepVGG 模块的效果并不好&…

苹果电脑系统优化工具:Ventura Cache Cleaner for mac

Ventura Cache Cleaner for Mac是一款专门为苹果电脑开发的系统优化工具,旨在帮助用户清理和优化Mac电脑,提高系统性能和速度。该软件由美国公司Northern Softworks开发,已经推出了多个版本,适用于不同版本的Mac操作系统。 Ventu…

pdf文件太大了不能上传怎么办?这几招值得学

PDF文件是一种常见的文档格式,但有时会遇到文件太大无法上传的问题,这时候简单的做法就是直接压缩文件的大小,但很多朋友还不知道怎么操作,下面就给大家介绍几个简单好用的,一起来看看吧。 工具一、嗨格式压缩大师 这…

二十七、响应式布局练习- 美图导航栏1

目录: 准备工作界面结构开发样式设计 - style.less 一、准备工作 开发响应式设计的网页需要注意以下几点: 1.移动端优先 - 先写完移动端的界面,再写网页。 因为现在都是手机用的比较多; 2.渐进增强 - 当移动端写完后,…

【Spring Cloud Gateway 新一代网关】—— 每天一点小知识

💧 S p r i n g C l o u d G a t e w a y 新一代网关 \color{#FF1493}{Spring Cloud Gateway 新一代网关} SpringCloudGateway新一代网关💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客&a…

js学习 记录(二)

js学习 记录(二) 匿名函数 函数表达式

节省近2400亿,中国芯片拿下7纳米工艺,外媒:挡不住中国芯了

从去年至今中国进口的芯片减少了1400亿颗,芯片进口金额减少了300多亿美元(约合近2400亿元人民币),尤为让人高兴的是近期频频传出中国或已搞定接近7纳米的N1工艺,并将为一家中国芯片企业生产芯片。 一、中国芯片夯实成熟…

InnoDB 的隔离级别是如何实现的

点击上方↑“追梦 Java”关注,一起追梦! MySQL 数据库 InnoDB 存储引擎的隔离级别是通过锁和 MVCC 的机制实现的。 1 了解 MySQL 中锁的机制 锁是用于避免不同事务对共享资源的并发访问的产生读一致性的问题的机制。 1、表锁和行锁 InnoDB 存储引擎支持行…

如何与 Zappos 建立 EDI 连接?

Zappos 是一家享誉全球的知名在线鞋类和服饰零售商,经营范围涵盖各类时尚品牌的鞋类、服饰及配饰等,使命是为广大消费者提供方便、愉悦、优质的购物体验,让每一位顾客都能找到心仪的产品。多年来,Zappos 卖场凭借卓越的服务与产品…

通用VS垂直,讯飞星火与网易子曰不同的“大模型解法”

配图来自Canva可画 随着大模型商业化应用的提速,全世界各国都开始孵化和孕育各自的行业大模型。在此背景下,国内各个细分行业的垂直大模型,日益受到产业界的关注和重视。 相比通用大模型,垂直大模型具有门槛较低、数据质量较好且…

安装虚拟机

分区 根分区5个G 同理 交换分区 最后一个分区,默认所有

串口环形缓冲区

文章目录 一、串口环形缓冲区概念二、STC12例程(1)环形串口缓冲区结构体(2)串口环形缓冲区存和取数据(3)完整工程demo 一、串口环形缓冲区概念 串口环形缓冲区应用于嵌入式、物联网开发中处理接收串口数据…

windows C++多线程同步<3>-互斥量

windows C多线程同步<3>-互斥量 概念,如下图: 另外就是互斥对象谁拥有,谁释放 那么一个线程允许多次获取互斥对象吗? 答案是允许,但是申请多次就要释放多次,否则其他线程获取不到互…

在线进销存-亿发移动进销存管理系统,助力批发零售企业线上线下同步经营

随着移动互联网的蓬勃发展,商品进销存管理日益变得复杂而关键,数字化转型已经成为批发零售企业增强竞争力的有效工具。移动进销存管理系统为批发零售企业提供一体化 解决方案,实现线上线下同步经营,帮助企业实现对商品的有效管理&…