【Java学习笔记】final关键字
final 关键字
一、final 关键字介绍
-
1. final可以修饰类、属性、方法和局部变量
-
2. final 的使用场景
-
(1)
类
不能被继承时,可以使用final
修饰 -
(2)类的某个
属性
不可以被更改,可以使用final
修饰 -
(3)父类的某个
方法
不能被子类重写,可以使用final
修饰 -
(4)某个
局部变量
不能被修改,可以使用final
修饰-
补充说明:关于局部变量
-
1. 可以是循环中的局部变量
-
2. 可以是方法中的局部变量
-
-
-
二、final 关键字使用细节
-
(1)
final
修饰的属性又叫常量,一般用 XX_XX_XX 来命名。 -
(2)
final
修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一(选择一个位置赋初值即可)-
1. 在定义时
-
2. 在构造器中
-
3. 在代码块中
-
-
(3)如果
final
修饰的属性是静态的,则初始化的位置只能是-
1. 在定义时
-
2. 在静态代码块中
-
3. 不能在构造器中赋值
-
-
(4)
final
类不能继承,但是可以实例化对象(可以创建一个 final 类的对象) -
(5)如果类不是
final
类,但是含有final
方法,则该方法不能重写,但是可以被继承 -
(6)代码规范:如果一个类已经是
final
类了,就没有必要再将该类中的方法修饰成final
方法了 -
(7)
final
不能修饰构造器 -
(8)包装类(
Integer
,Double
,Float
,Boolean
等都是final
),String
也是final
类 -
(9)(重点!)
final
和static
往往搭配使用,效率更高,不会导致类加载(底层编译器做了优化处理)-
理解:为什么不会导致类加载?
-
1. 编译器将 static final 的常量值直接存储到调用类的常量池中。
-
2. 使用该常量时,JVM 直接使用常量池中的值,不需要访问定义常量的类,自然就不会触发类的初始化(即类加载)。
-
-
代码示例:解释第 9 点
package final_;public class main {public static void main(String[] args) {System.out.println(A.a);}
}class A{public final static int a = 10;static {System.out.println("代码块被调用");}public A(){System.out.println("构造器被调用");}
}// 输出结果
10
代码解析
final
和static
搭配使用修饰一个属性,调用该属性时不会导致类的加载,即不会执行代码块中的内容
相关文章:
【Java学习笔记】final关键字
final 关键字 一、final 关键字介绍 1. final可以修饰类、属性、方法和局部变量 2. final 的使用场景 (1)类不能被继承时,可以使用final修饰 (2)类的某个属性不可以被更改,可以使用final修饰 ࿰…...

AI学习笔记二十八:使用ESP32 CAM和YOLOV5实现目标检测
若该文为原创文章,转载请注明原文出处。 最近在研究使用APP如何显示ESP32 CAM的摄像头数据,看到有人实现把ESP32 CAM的数据流上传,通过YOLOV5来检测,实现拉流推理,这里复现一下。 一、环境 arduino配置esp32-cam开发环…...

免费分享50本web全栈学习电子书
最近搞到一套非常不错的 Web 全栈电子书合集,整整 50 本,都是epub电子书格式,相当赞!作为一个被期末大作业和项目 ddl 追着跑的大学生,这套书真的救我狗命! 刚接触 Web 开发的时候,我天天对着空…...

【prometheus+Grafana篇】基于Prometheus+Grafana实现MySQL数据库的监控与可视化
💫《博主主页》: 🔎 CSDN主页 🔎 IF Club社区主页 🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了…...

全链路解析:影刀RPA+Coze API自动化工作流实战指南
在数字化转型加速的今天,如何通过RPA与API的深度融合实现业务自动化提效,已成为企业降本增效的核心命题。本文以「影刀RPA」与「Coze API」的深度协作为例,系统性拆解从授权配置、数据交互到批量执行的完整技术链路,助你快速掌握跨…...

高阶数据结构——哈希表的实现
目录 1.概念引入 2.哈希的概念: 2.1 什么叫映射? 2.2 直接定址法 2.3 哈希冲突(哈希碰撞) 2.4 负载因子 2.5 哈希函数 2.5.1 除法散列法(除留余数法) 2.5.2 乘法散列法(了解)…...
window 显示驱动开发-报告渲染操作的可选支持
从 Windows 7 开始,显示微型端口驱动程序可以在 DXGK_PRESENTATIONCAPS 结构中设置其他成员,以指示驱动程序可以或不能支持的某些呈现操作。 从 Windows 7 开始,显示微型端口驱动程序可以通过 DXGK_PRESENTATIONCAPS 结构进一步声明其支持的…...

2025 年网络安全趋势报告
一、引言 自欧洲信息安全协会(Infosecurity Europe)首次举办活动的 30 年来,网络安全格局发生了翻天覆地的变化。如今,网络安全领导者必须应对众多威胁,维持法规合规性,并与董事会成员合作推进组织的网络安…...

uniapp 条件筛选
v3 版本 <template><view class"store flex "><view class"store_view"><view class"store_view_search flex jsb ac"><!-- <view class"store_view_search_select">全部</view> --><v…...

pytorch问题汇总
conda环境下 通过torch官网首页 pip安装 成功运行 后面通过conda安装了别的包 似乎因为什么版本问题 就不能用了 packages\torch_init_.py", line 245, in _load_dll_libraries raise err OSError: [WinError 127] 找不到指定的程序。 Error loading ackages\torch\lib\c…...

开发过的一个Coding项目
一、文档资料、人员培训: 1、文档资料管理:这个可以使用OnLineHelpDesk。 2、人员培训:可以参考Is an Online Medical Billing and Coding Program Right for You - MedicalBillingandCoding.org。 3、人员招聘、考核:可以在Onli…...

数据仓库维度建模详细过程
数据仓库的维度建模(Dimensional Modeling)是一种以业务用户理解为核心的设计方法,通过维度表和事实表组织数据,支持高效查询和分析。其核心目标是简化复杂业务逻辑,提升查询性能。以下是维度建模的详细过程࿱…...

python打卡day37
早停策略和模型权重保存 知识点回顾: 过拟合的判断:测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint,还包含训练状态 早停策略 是否过拟合,可以通过同步打印训练集和测试集的loss曲线…...
Redis 5.0.10 集群部署实战(3 主 3 从,三台服务器)
本文详细介绍如何在三台服务器上部署 Redis 5.0.10 的集群(3 主 3 从),并为每个步骤、配置项和命令提供清晰的注释说明,确保生产环境部署稳定可靠。 1️⃣ 环境准备 目标架构:3 主 3 从,共 6 个节点,分布在 3 台服务器 服务器信息: 192.16.1.85 192.16.1.86 192.16.1.8…...

各个网络协议的依赖关系
网络协议的依赖关系 学习网络协议之间的依赖关系具有多方面重要作用,具体如下: 帮助理解网络工作原理 - 整体流程明晰:网络协议分层且相互依赖,如TCP/IP协议族,应用层协议依赖传输层的TCP或UDP协议来传输数据&#…...

OSC协议简介、工作原理、特点、数据的接收和发送
OSC协议简介 Open Sound Control(OSC) 是一种开放的、独立于传输的基于消息的协议,主要用于计算机、声音合成器和其他多媒体设备之间的通信。它提供了一种灵活且高效的方式来发送和接收参数化消息,特别适用于实时控制应用&#x…...

区块链可投会议CCF C--APSEC 2025 截止7.13 附录用率
Conference:32nd Asia-Pacific Software Engineering Conference (APSEC 2025) CCF level:CCF C Categories:软件工程/系统软件/程序设计语言 Year:2025 Conference time:December 2-5, 2025 in Macao SAR, China …...

【数字图像处理】_笔记
第一章 概述 1.1 什么是数字图像? 图像分为两大类:模拟图像与数字图像 模拟图像:通过某种物理(光、电)的强弱变化来记录图像上各个点的亮度信息 连续:从空间上和数值上是不间断的 举例&…...

从0开始学习R语言--Day10--时间序列分析数据
在数据分析中,我们经常会看到带有时间属性的数据,比如股价波动,各种商品销售数据,网站的网络用户活跃度等。一般来说,根据需求我们会分为两种,分析历史数据的特点和预测未来时间段的数据。 移动平均 移动平…...

基于开源链动2+1模式AI智能名片S2B2C商城小程序的产品驱动型增长策略研究
摘要:在数字化经济时代,产品驱动型增长(Product-Led Growth, PLG)已成为企业突破流量瓶颈、实现用户裂变的核心战略。本文以“开源链动21模式AI智能名片S2B2C商城小程序”(以下简称“链动AI-S2B2C系统”)为…...
每日算法 -【Swift 算法】反转整数的陷阱与解法:Swift 中的 32 位整数处理技巧
反转整数的陷阱与解法:Swift 中的 32 位整数处理技巧 在面试题和算法练习中,整数反转是一道非常经典的题目。乍一看很简单,但一旦加入“不能使用 64 位整数”和“不能溢出 32 位整数范围”这两个限制,问题就立刻变得有挑战性。本…...

使用 OpenCV 实现“随机镜面墙”——多镜片密铺的哈哈镜效果
1. 引言 “哈哈镜”是一种典型的图像变形效果,通过局部镜面反射产生扭曲的视觉趣味。在计算机视觉和图像处理领域,这类效果不仅有趣,还能用于艺术创作、交互装置、视觉特效等场景。 传统的“哈哈镜”往往是针对整张图像做某种镜像或扭曲变换…...

鸿蒙仓颉开发语言实战教程:页面跳转和传参
前两天分别实现了商城应用的首页和商品详情页面,今天要分享新的内容,就是这两个页面之间的相互跳转和传递参数。 首先我们需要两个页面。如果你的项目中还没有第二个页面,可以右键cangjie文件夹新建仓颉文件: 新建的文件里面没什…...
如何在Vue中实现延迟刷新列表:以Element UI的el-switch为例
如何在Vue中实现延迟刷新列表:以Element UI的el-switch为例 在开发过程中,我们经常需要根据用户操作或接口响应结果来更新页面数据。本文将以Element UI中的el-switch组件为例,介绍如何在状态切换后延迟1秒钟再调用刷新列表的方法࿰…...

最新Spring Security实战教程(十六)微服务间安全通信 - JWT令牌传递与校验机制
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…...
MDM在智能健身设备管理中的技术应用分析
近年来,随着智能硬件的普及和健身行业的数字化转型,越来越多健身房引入了Android系统的智能健身设备,如智能动感单车、智能跑步机、体测仪等。这些设备通过内嵌的安卓终端,实现了健身内容播放、用户交互、远程课程等功能ÿ…...
OSPF ABR汇总路由
一、OSPF ABR汇总配置(手工汇总) 📌 场景示例 假设ABR连接区域0和区域1,区域1内存在多个子网(如10.1.0.0/24、10.1.1.0/24),需将其手动汇总为10.0.0.0/8并通告至区域0。 🔧 配置命…...

【五】Spring Cloud微服务开发:解决版本冲突全攻略
Spring Cloud微服务开发:解决版本冲突全攻略 目录 Spring Cloud微服务开发:解决版本冲突全攻略 概述 一、Spring Boot 二、Spring Cloud 三、Spring Cloud Alibaba 总结 概述 spring cloud微服务项目开发过程中经常遇到程序包版本冲突的问题&…...

Spring Boot微服务架构(二):开发调试常见中文问题
Spring Boot开发调试常见中文问题及解决方案 一、环境配置类问题 端口冲突 表现:启动时报错"Address already in use"解决:修改application.properties中的server.port或终止占用端口的进程 数据库连接失败 表现:启动时报错"…...

Linux基础IO----动态库与静态库
什么是库? 库是由一些.o文件打包在一起而形成的可执行程序的半成品。 如何理解这句话呢? 首先,一个程序在运行前需要进行预处理、编译、汇编、链接这几步。 预处理: 完成头文件展开、去注释、宏替换、条件编译等,最终…...