当前位置: 首页 > news >正文

理解 Java 中的 `final` 关键字

理解 Java 中的 final 关键字

final 关键字是 Java 编程语言中一个重要的修饰符,它可以应用于类、方法和变量。理解 final 的用法和作用对于编写稳健和高效的 Java 代码至关重要。在本文中,我们将深入探讨 final 关键字的各种用法及其意义。

一、final 变量

在 Java 中,使用 final 关键字声明的变量被称为常量。一旦被赋值,就不能再更改。final 变量的用法如下:

public class FinalVariableExample {public static final int MAX_SIZE = 100;public static void main(String[] args) {final int localVariable = 10;// localVariable = 20; // 编译错误,无法重新赋值System.out.println("Local final variable: " + localVariable);}
}

注意点:

  • final 变量必须在声明时或构造函数中进行初始化。
  • 常用于定义常量,例如 public static final 组合来定义类常量。

二、final 方法

使用 final 修饰的方法不能被子类重写。这对于确保方法的行为在继承体系中保持不变非常有用。

public class FinalMethodExample {public final void displayMessage() {System.out.println("This is a final method.");}
}public class SubClass extends FinalMethodExample {// public void displayMessage() { //     // 编译错误,无法重写父类的 final 方法// }
}

注意点:

  • final 方法在设计不可变类或希望确保某些方法不被修改时特别有用。
  • 提高安全性,防止子类改变核心方法的行为。

三、final

使用 final 修饰的类不能被继承。这样可以避免类的设计被扩展和修改。

public final class FinalClassExample {public void displayMessage() {System.out.println("This is a final class.");}
}// public class SubClass extends FinalClassExample { 
//     // 编译错误,无法继承 final 类
// }

注意点:

  • 适用于工具类或希望确保类不被扩展的情况。
  • 增加了安全性,防止类的意图被子类改变。

四、final 参数

方法参数也可以用 final 修饰,表示参数在方法内部不能被修改。

public class FinalParameterExample {public void displayValue(final int value) {// value = 20; // 编译错误,无法修改 final 参数System.out.println("Final parameter value: " + value);}
}

注意点:

  • 常用于确保参数在方法中保持不变。
  • 提高代码的可读性和维护性。

参考链接

  • Java 官方文档
  • Java Language Specification - Final
  • Effective Java by Joshua Bloch

在这里插入图片描述

相关文章:

理解 Java 中的 `final` 关键字

理解 Java 中的 final 关键字 final 关键字是 Java 编程语言中一个重要的修饰符,它可以应用于类、方法和变量。理解 final 的用法和作用对于编写稳健和高效的 Java 代码至关重要。在本文中,我们将深入探讨 final 关键字的各种用法及其意义。 一、final…...

磁盘未格式化:深度解析、恢复方案及预防之道

在当今这个信息化爆炸的时代,磁盘未格式化问题无疑成为了众多用户头疼的难题。当我们的存储设备突然提示“磁盘未格式化”时,数据的丢失与恢复的挑战便摆在了我们面前。本文将深入解析磁盘未格式化的现象、原因,并给出两种有效的数据恢复方案…...

JWT 从入门到精通

什么是 JWT JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案 JSON Web Token Introduction - jwt.ioLearn about JSON Web Tokens, what are they, how they work, when and why you should use them.https://jwt.io/introduction 一、常见会…...

31-捕获异常(NoSuchElementException)

在定位元素的时候,经常会遇到各种异常,遇到异常又该如何处理呢?本篇通过学习selenium的exceptions模块,了解异常发生的原因。 一、发生异常 打开百度搜索首页,定位搜索框,此元素id"kw"。为了故意…...

使用Spring Boot设计对象存储系统

对象存储系统是一种以对象为存储单位的存储架构,适合存储大量非结构化数据,如图片、音视频文件、文档等。MinIO是一个高性能的对象存储系统,基于开源和云原生的设计理念。本文将讨论如何使用Spring Boot设计一个类似MinIO的对象存储系统。 目…...

Apple开发者macOS设备与描述文件Profile创建完整过程

安装并打开Apple Configurator 新建描述文件 输入macOS平台的描述文件的相关信息,然后选择证书 选择一个可用证书 存储描述文件 存储成功如下: 使用文本编辑器打开刚才保存的描述文件,找到设备名与UDID...

SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 …...

mysql设置允许外部ip访问,局域网IP访问

(支持MYSQL8版本) 1. 登录进入mysql;mysql -uroot -p输入密码进入 2. 输入以下语句,进入mysql库,查看user表中root用户的访问 use mysql; select host,user from user; 3. 更新user表中root用户域属性&#xff0c…...

mac虚拟光驱工具:Daemon Tools for Mac

Daemon Tools for Mac是一款功能强大的虚拟光驱工具,它为用户提供了在Mac上模拟物理光驱的能力,从而方便用户处理各种光盘映像文件。以下是关于Daemon Tools for Mac的详细介绍: 守护进程工具:Daemon Tools不仅是一个简单的虚拟光…...

软考 系统架构设计师系列知识点之杂项集萃(32)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(31) 第51题 网络逻辑结构设计的内容不包括( )。 A. 逻辑网络设计图 B. IP地址方案 C. 具体的软硬件、广域网连接和基本服务 D. 用户培训计划 正确答案&am…...

Web--CSS基础

文章目录 定义方式选择器文本字体背景边框元素展示格式内边距与外边距盒子模型位置浮动flex布局响应式布局 定义方式 行内样式表 直接定义在style属性中&#xff0c;作用于当前标签 <img src "/imges/logo.jpg" alt "" style "width 400"…...

服务部署:Linux系统部署C# .NET项目

1. 安装 .NET SDK 首先&#xff0c;你需要在你的 Linux 系统上安装 .NET SDK。 Ubuntu系统&#xff1a; 下载 Microsoft 包配置文件 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 这个命令使用 wge…...

【机器学习】基于卷积LSTM的视频预测

1. 引言 1.1 LSTM是什么 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;变体&#xff0c;旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制和细胞状态的概念&#xff0c;使得…...

细说wayland和X11

文章目录 协议介绍协议区别开发差异 Wayland和X11都是用于Linux和其他类Unix系统的显示服务器协议。它们负责在用户和应用程序之间的交互中管理屏幕的输出以及输入设备的输入。 协议介绍 X11通常称为X Window System&#xff0c;是一个历史悠久的显示服务器&#xff0c;自1987…...

数据结构:二叉树的实现

目录 二叉树的遍历方式 前序遍历&#xff1a; 中序遍历&#xff1a; 后序遍历&#xff1a; 二叉树的基本结构和功能 基本结构&#xff1a; 基本功能&#xff1a; 二叉树功能的实现思路 二叉树功能的实现 1、构建一个二叉树 2、二叉树的销毁 3、计算二叉树里的节点个数 4、得…...

Helm离线部署Rancher2.7.10

环境依赖&#xff1a; K8s集群、helm 工具 Rancher组件架构 Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中&#xff0c;Rancher Server 管理两个下游 Kubernetes 集群 准备Rancher镜像推送到私有仓库 cat >…...

Linux目录的作用和常用指令

目录结构及其详细作用 / (根目录) Linux文件系统的起点&#xff0c;所有文件和目录都在其下。 /bin 存放系统启动和运行时所需的基本命令&#xff0c;如 ls, cp, mv, rm&#xff0c;这些命令在单用户模式下或系统崩溃时仍然可用。 /boot 包含启动引导加载器的文件和Linux内核…...

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:隧道和矿井绘图设备

RockMass 正在努力打入采矿业和隧道工程利基市场。 这家位于多伦多的初创公司正在利用 NVIDIA AI 开发一款绘图平台&#xff0c;帮助工程师评估矿井和施工中的隧道稳定性。 目前&#xff0c;作为安全预防措施&#xff0c;地质学家和工程师会站在离岩石五米远的地方&#xff0…...

MySQL物理备份

目录 备份策略 全量备份 (Full Backup) 增量备份 (Incremental Backup) 差异备份 (Differential Backup) 使用 Percona XtraBackup 全量备份 步骤 1&#xff1a;全量备份 步骤 2&#xff1a;备份后处理&#xff08;应用日志&#xff09; 步骤 3&#xff1a;恢复备份 验…...

AWT常用组件

AWT中常用组件 前言一、基本组件组件名标签(Label类)Label类的构造方法注意要点 按钮(Button)Button的构造方法注意要点 文本框(TextField)TextField类的构造方法注意要点 文本域&#xff08;TextArea&#xff09;TextArea 的构造方法参数scrollbars的静态常量值 复选框&#x…...

CorelDRAW2024破解激活码序列号一步到位

亲们&#xff0c;今天给大家种草一个神奇的软件——CorelDRAW破解2024最新版&#xff01;&#x1f3a8;这是一款专业级的矢量图形设计软件&#xff0c;无论你是平面设计师、插画师还是设计师&#xff0c;都能在这个软件中找到你需要的工具和功能。✨ 让我来给大家介绍一下这款软…...

Webpack前端打包工具详解

目录 Webpack前端打包工具详解一、Webpack 的作用二、Webpack 的安装和基本使用1. 安装 Webpack2. 创建 Webpack 配置文件3. 运行 Webpack 三、Webpack 核心概念1. 入口&#xff08;Entry&#xff09;2. 输出&#xff08;Output&#xff09;3. 加载器&#xff08;Loaders&#…...

计网总结☞网络层

.................................................. 思维导图 ........................................................... 【Wan口和Lan口】 WAN口&#xff08;Wide Area Network port&#xff09;&#xff1a; 1)用于连接外部网络&#xff0c;如互联…...

【全开源】云调查考试问卷系统(FastAdmin+ThinkPHP+Uniapp)

便捷、高效的在线调研与考试新选择​ 云调查考试问卷是一款基于FastAdminThinkPHPUniapp开发的问卷调查考试软件&#xff0c;可以自由让每一个用户自由发起调查问卷、考试问卷。发布的问卷允许控制问卷的搜集、回答等各个环节的设置&#xff0c;同时支持系统模板问卷&#xff…...

网络安全难学吗?2024该怎么系统学习网络安全?

学习网络安全需要循序渐进&#xff0c;由浅入深。很多人对网络安全进行了解以后&#xff0c;就打算开始学习网络安全&#xff0c;但是又不知道怎么去系统的学习。 网络安全本身的知识不难&#xff0c;但需要学习的内容有很多&#xff0c;其中包括Linux、数据库、渗透测试、等保…...

2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.6 用计算机语言表示算法

我们的任务是用计算机解题&#xff0c;就是用计算机实现算法&#xff1b; 用计算机语言表示算法必须严格遵循所用语言的语法规则。 【例 2.20】求 12345 用 C 语言表示。 main() {int i,t; t1; i2; while(i<5) {tt*i; ii1; } printf(“%d”,t); } 【例 2.21】求级数的…...

重生之我要精通JAVA--第八周笔记

文章目录 多线程线程的状态线程池自定义线程池最大并行数多线程小练习 网络编程BS架构优缺点CS架构优缺点三要素IP特殊IP常用的CMD命令 InetAddress类端口号协议UDP协议&#xff08;重点&#xff09;UDP三种通信方式 TCP协议&#xff08;重点&#xff09;三次握手四次挥手 反射…...

51单片机独立按键控制LED灯,按键按一次亮,再按一次灭

1、功能描述 独立按键控制LED灯&#xff0c;按键按一次亮&#xff0c;再按一次灭 2、实验原理 轻触按键:相当于是一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动米实现接通和断开&#xff1b;…...

【上海大学计算机组成原理实验报告】七、程序转移机制

一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容&#xff0c;实验箱系统的程序转移硬件机制在于&#xff0c;当LDPC有效时&#xff0c;如果此时DUBS上的值就是转移的目标地址&#xff0c;则此目标地址被打入PC&am…...

LLVM Cpu0 新后端7 第一部分 DAG调试 dot文件 Machine Pass

想好好熟悉一下llvm开发一个新后端都要干什么&#xff0c;于是参考了老师的系列文章&#xff1a; LLVM 后端实践笔记 代码在这里&#xff08;还没来得及准备&#xff0c;先用网盘暂存一下&#xff09;&#xff1a; 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…...

做任务领佣金的网站源码/网站排名工具

目录 B树 树 二叉搜索树 红黑树&#xff08;二叉搜索树的改进&#xff09; B树&#xff08;多叉搜索树的改进&#xff09; B树 扩展 为什么存储用B树而不是红黑树 为什么说B树比B树更适合做操作系统的数据库索引和文件索引&#xff1f; B树的操作图解和代码 摘抄自&a…...

WordPress版块隐藏/搜索引擎优化的含义

背景 早期互联网只是用来访问查看&#xff0c;不需要关心谁在访问查看。HTTP是一种无状态的协议&#xff0c;每个请求都是完全独立的&#xff0c;服务端无法确认当前访问者的身份信息&#xff0c;为了标示用户&#xff0c;就出现了Cookie&#xff0c;而Cookie、Token、JWT 都是…...

企业网站建设的一般原则/seo优化网络公司

BeautifulSoup4 官方文档 是一个Python库&#xff0c;用于从HTML和XML文件中提取数据。它与您最喜欢的解析器一起使用&#xff0c;提供导航&#xff0c;搜索和修改解析树的惯用方法。它通常可以节省程序员数小时或数天的工作量。 1.安装BeautifulSoup4 pip install bs4 2.详细操…...

wordpress自带主题优化/58百度搜索引擎

文章目录前言一、有限元模型二、C程序实现前言 只是为方便学习&#xff0c;不做其他用途&#xff0c;matlab程序参考平面三角形单元有限元实现——有限元实践笔记&#xff08;5&#xff09; 一、有限元模型 相应的理论分析可参考平面三角形单元有限元实现——有限元实践笔记&am…...

多梦wordpress主题/长春网站制作系统

《信条》打造的光影奇观让观众眼前一亮&#xff0c;其展现出的时间逆行和顺行的人互相战斗的场面让人感到震撼和惊奇&#xff0c;然而这部电影却也令很多观众感觉想不通&#xff0c;觉得BUG太多。而深究这些BUG的原因&#xff0c;绝大多数都是由于电影中引入了“熵减”的概念&a…...

三亚网站建设兼职/怎么创建自己的网站平台

App在后台久置后&#xff0c;再次从桌面或最近的任务列表唤醒时经常会发生崩溃&#xff0c;这往往是App在后台被系统杀死&#xff0c;再次恢复的时候遇到了问题&#xff0c;而在使用FragmentActivityFragment的时候会更加频繁。比如&#xff0c;如果Fragment没有提供默认构造方…...