final finally 和 finalize的区别

news/2024/10/30 9:33:26/

final、finally和finalize都是Java中的关键字,但它们的含义和用途却不同。

  • final 表示不可变,用于修饰类、方法和变量。

  • finally 表示无论如何都会执行的代码块,用于清理资源和恢复现场。

  • finalize 是Object类的一个方法,用于在对象被垃圾收集器回收之前释放资源和清理工作。

1.final

final是Java语言的关键字,可以用来修饰类、方法、变量等,表示这些元素是不可变的,一旦被赋值之后就不能再进行修改。final的作用如下:

  • 用于修饰类,表示该类不能被继承。
  • 用于修饰方法,表示该方法不能被子类重写。
  • 用于修饰变量,表示该变量只能被赋值一次,且不能被重新赋值。
  • 用于修饰方法参数和局部变量,表示它们只能被赋值一次,且不能被重新赋值。

代码示例:

public final class MyClass { // 该类不能被继承public final int num = 100; // 变量只能被赋值一次,且不能被重新赋值public final void myMethod(final int arg) { // 参数只能被赋值一次,且不能被重新赋值final int localVar = 200; // 局部变量只能被赋值一次,且不能被重新赋值System.out.println(num + arg + localVar);}
}

2.finally

finally是Java语言的关键字,用于定义在try-catch块中的一个代码块,在任何情况下,无论是否发生异常,该代码块都会被执行。finally块经常用于清理资源和恢复现场。

代码示例:

FileInputStream fis = null;
try {fis = new FileInputStream("test.txt");// 处理fis
} catch (FileNotFoundException e) {// 处理文件不存在异常
} finally {if (fis != null) {try {fis.close();} catch (IOException e) {// 处理关闭文件流异常}}
}

3.finalize

finalize是Java中一个Object类的protected方法,当一个对象即将被垃圾收集器回收时,会自动调用该对象的finalize()方法。子类可以重写该方法进行资源释放或类似的清理工作。但应该避免过度依赖该方法,因为不保证一定会执行,原因如下:

  • finalize()方法的执行时间不确定,它的调用是由JVM中某个优化算法所决定的,具体时间无法预测。

  • finalize()方法的调用依赖于垃圾回收器的工作机制,如果垃圾回收器没有运行或者没有回收相应的对象,那么finalize()方法也不会被调用。

  • finalize()方法的调用只有在对象被回收之前才会被执行,如果存在引用链或者存在其他原因导致对象没有被回收,那么finalize()方法就不会被调用。

  • 由于finalize()方法只会被执行一次,如果该方法由于某些原因抛出异常,那么这个对象的finalize()方法就不会再被调用,可能会造成资源泄漏等问题。

代码示例:

public class MyClass {@Overrideprotected void finalize() throws Throwable {// 资源释放或清理工作super.finalize();}
}


http://www.ppmy.cn/news/271560.html

相关文章

【Java】Java核心要点总结:58

文章目录 1. java中 怎么确保一个集合不能被修改2. 队列和栈是什么 有什么区别3. Java8开始的ConcurrentHashMap为什么舍弃了分段锁4. ConcurrentHashMap 和 Hashtable有什么区别5. ReadWriteLock和StampeLock 1. java中 怎么确保一个集合不能被修改 Java 中可以使用 Collectio…

vue3开发web网页版免费ChatGPT

Vue3和TypeScript是目前非常流行的前端开发技术,它们的结合可以让我们更加高效地进行Web网页开发。本文将介绍Vue3和TypeScript的基本概念以及如何使用它们进行Web网页开发。 在浏览器中访问 https://shdily.com 就可以看到我们的Web网页了。 Vue3简介 Vue.js是一…

有了智能共享取餐柜,外卖也能吃出科技感

随着互联网和移动支付方式的普及,越来越多的黑科技逐渐出现在了大众视野中,比如智能家居,商用智能硬件,人工智能等,都是热议话题。而智能取餐柜解决了餐饮行业很普遍的几个痛点,在很大程度上缓解了吃饭难、…

ct值在哪里看_【行情】肇庆CT室硫酸钡施工报价

【行情】肇庆CT室硫酸钡施工报价 手术室净化器的无菌标准是什么?相信这是很多朋友心中的疑惑,所以我们的小编就请教了相关的专业人士并给大家整理了一下,下面我们就一起来看看这方面的介绍,相信能够让大家很好的认识这一点。&…

设计师:行业内设计师从出图到收费流程(设计收费标准、客户与设计师洽谈、设计师现场测量、设计师提供报价、设计图纸内容、签订合同、现场交底)之详细攻略

设计师:行业内设计师从出图到收费流程(设计收费标准、客户与设计师洽谈、设计师现场测量、设计师提供报价、设计图纸内容、签订合同、现场交底)之详细攻略 目录 行业内设计师从出图到收费流程 设计收费标准 1、客户与设计师洽谈

17年前那场疫情:马云隔离在家,刘强东关了12家店,俞敏洪欠债700万......

来 源:视觉志(ID:iiidaily) 作 者:山野 图片来源:网络 01 凛冬将至 2002年12月15日,广东省河源市出现第一例非典病例。 没有人意识到它有多可怕。先是密切接触者被感染,随后是医…

空气中弥漫着『病毒』的味道

文章目录 流感病毒的历史纵览贯古通今 预防情景现状场景一:充满口罩与消毒水味道的城市场景二:口罩价格场景三:地铁上的一声咳嗽场景四:办公室『吃醋了』 我们是否越来越害怕『承担』?我的病毒认证观 引言: 我是小威&a…

奋斗5年,从月薪3500到700万(不止谈赚钱,故事也很感人)

来上海整整五年了,事业上已有了突飞猛进的飞跃,生活方面有过一段段的辛酸。然而,如今回首看来,这五年来也这是这些苦恼最终成为我前进的机 遇,让我拥有了目前还算可以的生活境遇—700万身价,对有些兄弟来说…