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

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

finalfinallyfinalize 是 Java 中三个完全不同的概念,分别用于修饰变量、定义异常处理块和垃圾回收。

final

final 是一个关键字,用于修饰类、方法、变量等。被 final 修饰的类不能被继承,被 final 修饰的方法不能被子类重写,被 final 修饰的变量是常量,不能再被赋值。下面是一个使用 final 的示例:

public class Example {// 常量public static final int MAX_VALUE = 100;// 被 final 修饰的方法,不能被重写public final void printMessage() {System.out.println("This is a final method.");}public static void main(String[] args) {// 被 final 修饰的变量,不能再被赋值final int x = 10;// x = 20; // 编译错误}
}

finally

finally 是用于定义在异常处理块中的代码块,无论是否发生异常,finally 中的代码都会被执行。通常用于释放资源、关闭文件或网络连接等操作。下面是一个使用 finally 的示例:

public class Example {public static void main(String[] args) {try {// 一些可能抛出异常的操作} catch (Exception e) {// 处理异常} finally {// 无论是否发生异常,都会执行的代码块System.out.println("Finally block is executed.");}}
}

finalize

finalize 是一个方法,属于 Object 类的一部分,用于在对象被垃圾回收之前执行一些清理操作。但是,不推荐使用 finalize,因为它的执行时机是不确定的,而且在现代Java中,有更好的资源管理方式,如使用 try-with-resources

public class Example {@Overrideprotected void finalize() throws Throwable {// 在对象被垃圾回收之前执行的清理操作System.out.println("Finalize method is called.");}public static void main(String[] args) {Example obj = new Example();// 对象变成垃圾时,finalize 方法可能被调用obj = null;System.gc(); // 显式触发垃圾回收}
}

总结:

  • final 用于修饰类、方法、变量,表示不可改变的。
  • finally 用于定义在异常处理块中的代码块,无论是否发生异常都会执行。
  • finalize 是一个方法,在对象被垃圾回收之前执行,但不推荐使用。

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

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

相关文章

安徽省人民政府关于印发《打造通用人工智能产业创新和应用高地若干政策》通知

安徽省人民政府关于印发《打造通用人工智能产业创新和应用高地若干政策》通知 原文地址 各市、县人民政府,省政府各部门、各直属机构: 现将《打造通用人工智能产业创新和应用高地若干政策》印发给你们,请认真贯彻落实。 安徽省人民政府 2…

纯HTML代码实现给图片增加水印并下载保存到本地

<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1, user-scalableno"/><title>图片水印打码工具-宋佳乐博客</tit…

计算机图形学理论(3):着色器编程

本系列根据国外一个图形小哥的讲解为本&#xff0c;整合互联网的一些资料&#xff0c;结合自己的一些理解。 CPU vs GPU CPU支持&#xff1a; 快速缓存分支适应性高性能 GPU支持&#xff1a; 多个 ALU快速板载内存并行任务的高吞吐量&#xff08;在每个片段、顶点上执行着色…

nn.Embedding()个人记录

维度 import torch.nn as nnembedding nn.Embedding(num_embeddings 10, embedding_dim 256) nn.Embedding()随机产生一个权重矩阵weight&#xff0c;维度为&#xff08;num_embeddings, embedding_dim&#xff09; 输入维度&#xff08;batch_size, Seq_len&#xff09…

winlogbeat收集Windows事件日志传给ELK

服务器部署winlogbeat后&#xff0c;修改winlogbeat.yml: ###################### Winlogbeat Configuration Example ######################### This file is an example configuration file highlighting only the most common # options. The winlogbeat.reference.yml fi…

基于Java+SpringBoot+MyBatis-plus+Vue前后端分离小区管理系统设计与实现2.0

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

力扣日记12.24-【二叉树篇】236. 二叉树的最近公共祖先

力扣日记&#xff1a;【二叉树篇】236. 二叉树的最近公共祖先 日期&#xff1a;2023.12.24 参考&#xff1a;代码随想录、力扣 ps&#xff1a;提前祝 平安夜快乐&#xff01; 236. 二叉树的最近公共祖先 题目描述 难度&#xff1a;中等 给定一个二叉树, 找到该树中两个指定节点…

linux线程取消, pthread线程取消,pthread_testcancel用法

pthread_cancel Linux中&#xff0c;线程在运行时如果想要取消&#xff0c;一种方法是调用pthread_cancel()函数&#xff0c;它的原型是&#xff1a; /* Cancel THREAD immediately or at the next possibility. */ extern int pthread_cancel (pthread_t __th); 参数pthre…

Python连接数据库

文章目录 一、安装mysql二、SQLyog可视化操作三、python实现数据库单表类封装1. config 文件——config.py2. 封装类&#xff08;model&#xff09;——model.py3. 测试文件——test.py 一、安装mysql 官网安装&#xff0c;或者Windows64位直接在我的资源里面上传了mysql&…

【PostgreSQL】从零开始:(二十七)数据类型-UUID 类型

UUID 类型 UUID&#xff08;通用唯一标识符&#xff09;是一个128位的数字标识符&#xff0c;用于在计算机系统中唯一地标识实体。它的标准格式为32个十六进制数字&#xff0c;用连字符分隔成五个组&#xff0c;形式如&#xff1a;8-4-4-4-12。UUID在各种系统和平台上广泛使用…

华为OD机试 - 测试用例执行计划(Java JS Python C)

题目描述 某个产品当前迭代周期内有 N 个特性(F1,F2,......FN)需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其 ID 作为下标进行标识。 设计了 M 个测试用例(T1,T2,......,TM),每个测试用例对应一个覆盖特性的集合,测试用例使用其 ID 作为下标进行标识,…

C/C++ 基础函数

memcpy&#xff1a;C/C语言中的一个用于内存复制的函数&#xff0c;声明在 string.h 中&#xff08;C是 cstring&#xff09; void *memcpy(void *destin, void *source, unsigned n);作用是&#xff1a;以source指向的地址为起点&#xff0c;将连续的n个字节数据&#xff0c;…

Acwing 周赛135 题解

A&#xff1a;https://www.acwing.com/problem/content/5378/ 思路&#xff1a;签到题&#xff0c;输出n/x即可。 代码&#xff1a; #include<bits/stdc.h> using namespace std; #define rep(i,a,b) for(int i(a);i<(b);i) #define lop(i,a,b) for(int i(a);i<…

Linux: config: CONFIG_NODES_SHIFT;numa;强制挂钩

文章目录 简介config NODES_SHIFT循环接口简介 node和numa算是强挂钩关系了。和node相关的,几乎全部是numa。所以不要疑惑node和numa的强关联性。 config NODES_SHIFT Redhat提供的是10,也就是支持1024个node,但实际上用不了这么多,但是为了通用性,设置了这么大,其实可…

HarmonyOS - 鸿蒙开发入门

文章目录 HarmonyOS核心资源特性&#xff1a;全场景终端HarmonyOS 版本 HarmonyOS 和 OpenHarmony教程资源开发环境开发工具 - DevEco开发语言 - ArkTS核心框架 - ArkUI 考证 HarmonyOS 开发交流秋秋群&#xff1a;23458659&#xff0c;V : ez-code&#xff0c;期待交流和合作 …

前端基础location的使用

概念 获取当前页面的地址信息&#xff0c;还可以修改某些属性&#xff0c;实现页面跳转和刷新等。 样例展示 window.location 含义.originURL 基础地址&#xff0c;包括协议名、域名和端口号.protocol协议 (http: 或 https:).host域名端口号.hostname域名.port端口号.pathname路…

自学SLAM(9)《第五讲:特征点法视觉里程计》作业

文章目录 1.ORB特征点1.1 ORB提取1.2 ORB描述1.3 暴力匹配1.4 最后&#xff0c;请结合实验&#xff0c;回答下⾯⼏个问题 2.从 E 恢复 R&#xff0c;t3.用 G-N 实现 Bundle Adjustment4.* 用 ICP 实现轨迹对齐 1.ORB特征点 1.1 ORB提取 ORB(Oriented FAST and BRIEF) 特征是 S…

计算机视觉基础(10)——深度学习与图像分类

前言 传统视觉算法采用手工设计特征与浅层模型&#xff0c;而手工设计特征依赖于专业知识&#xff0c;且泛化能力差。深度学习的出现改变了这一状况&#xff0c;为视觉问题提供了端到端的解决方案。在之前的课程中&#xff0c;我们已经学习了图像分类的传统知识。在本节课中&am…

【小白专用】php中如何清除session(四种方法)

Session是一种在Web开发中常用的状态管理机制&#xff0c;用来存储和共享用户会话信息。Session数据存储在服务器端&#xff0c;但由于Web应用的特性&#xff0c;可能会出现一些异常&#xff0c;比如过期、被污染等问题。在PHP中&#xff0c;我们可以通过以下几种方式清除Sessi…

c语言:求1/2+2/3+3/4+……n-1/n的和|练习题

一、题目 求1/22/33/4……n-1/n的和 如图&#xff1a; 二、思路分析 1、1/2、2/3、3/4……可以用(i/i1) 2、设置一个函数&#xff0c;求数的相加之和 三、代码截图【带注释】 四、源代码【带注释】 #include <stdio.h> int main() { int num; printf("输入…