final 关键字在不同上下文中的用法及其名称
1. final 变量
-
名称:
final变量(常量)。 -
作用:一旦赋值后,值不能被修改。
-
分类:
-
final实例变量:必须在声明时或构造函数中初始化。 -
final静态变量:必须在声明时或静态代码块中初始化。
-
示例:
class Example {final int instanceVar = 10; // final 实例变量final static int staticVar; // final 静态变量static {staticVar = 20; // 在静态代码块中初始化}Example(int value) {// instanceVar = value; // 错误:final 实例变量已经初始化}
}
2. final 方法
-
名称:
final方法。 -
作用:不能被子类重写(Override)。
示例:
class Parent {final void display() {System.out.println("This is a final method.");}
}class Child extends Parent {// void display() { // 错误:不能重写 final 方法// System.out.println("Trying to override final method.");// }
}
3. final 类
-
名称:
final类。 -
作用:不能被继承。
final class FinalClass {void display() {System.out.println("This is a final class.");}
}// class SubClass extends FinalClass { // 错误:不能继承 final 类
// }
4. final 参数
-
名称:
final参数。 -
作用:在方法内部不能修改参数的值。
示例:
void printMessage(final String message) {// message = "New Message"; // 错误:不能修改 final 参数System.out.println(message);
}
5. final 与匿名内部类
-
名称:
final局部变量(用于匿名内部类)。 -
作用:在匿名内部类中使用的局部变量必须是
final或等效于final(即不可变)。
示例:
void printMessage() {final String message = "Hello"; // final 局部变量Runnable r = new Runnable() {public void run() {System.out.println(message); // 在匿名内部类中使用}};new Thread(r).start();
}
6. final 与多线程
-
名称:
final字段(用于多线程安全)。 -
作用:
final字段在构造函数完成后是线程安全的,其他线程可以看到正确的初始化值。
示例:
class SafePublication {final int value;SafePublication(int value) {this.value = value; // 构造函数中初始化 final 字段}void printValue() {System.out.println(value);}
7. final 与不可变对象
-
名称:不可变对象(Immutable Object)。
-
作用:通过将类的字段声明为
final,可以创建不可变对象。
示例:
final class ImmutablePoint {private final int x;private final int y;public ImmutablePoint(int x, int y) {this.x = x;this.y = y;}public int getX() {return x;}public int getY() {return y;}
}
8. final 与静态常量
-
名称:静态常量。
-
作用:通过
static final定义全局常量。
示例:
class Constants {public static final double PI = 3.14159; // 静态常量public static final String APP_NAME = "MyApp";
}
总结
| 类型 | 名称 | 作用 | 示例 |
|---|---|---|---|
final 变量 | final 变量(常量) | 值不可变 | final int x = 10; |
final 方法 | final 方法 | 不能被子类重写 | final void display() { ... } |
final 类 | final 类 | 不能被继承 | final class FinalClass { ... } |
final 参数 | final 参数 | 方法内部不能修改参数值 | void print(final String message) { ... } |
final 局部变量 | final 局部变量 | 匿名内部类中使用的局部变量必须是 final | final String msg = "Hello"; |
final 字段 | final 字段 | 多线程安全,构造函数完成后不可变 | final int value; |
| 不可变对象 | 不可变对象 | 通过 final 字段实现不可变性 | final class ImmutablePoint { ... } |
| 静态常量 | 静态常量 | 通过 static final 定义全局常量 | public static final double PI = 3.14159; |
通过合理使用 final 关键字,可以提高代码的安全性、可读性和性能。
相关文章:
final 关键字在不同上下文中的用法及其名称
1. final 变量 名称:final 变量(常量)。 作用:一旦赋值后,值不能被修改。 分类: final 实例变量:必须在声明时或构造函数中初始化。 final 静态变量:必须在声明时或静态代码块中初…...
Elasticsearch:使用阿里云 AI 服务进行嵌入和重新排名
作者:来自 Elastic Toms Mura 将阿里云 AI 服务功能与 Elastic 结合使用。 更多阅读,请参阅 “Elasticsearch:使用阿里 infererence API 及 semantic text 进行向量搜索”。 在本文中,我们将介绍如何将阿里云 AI 功能与 Elastics…...
【愚公系列】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
IP属地是通过卫星定位的吗?如何保护用户隐私
在数字时代,网络空间成为了人们日常生活不可或缺的一部分。随着社交媒体、在线服务等平台的兴起,用户IP属地信息的重要性日益凸显。然而,关于IP属地是如何确定的,尤其是是否通过卫星定位这一问题,却常常引发公众的疑问…...
【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置)
【【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置) 前言一、Vikunja介绍1.1 Vikunja简介1.2 Vikunja主要特点1.3 使用场景二、相关知识介绍2.1 本次实践存储介绍2.2 k8s存储介绍三、本次实践介绍3.1 本次实践简介3.2 本次环境规划3.3 部署前…...
php序列化与反序列化
文章目录 基础知识魔术方法:在序列化和反序列化过程中自动调用的方法什么是 __destruct() 方法?何时触发 __destruct() 方法?用途:语法示例: 反序列化漏洞利用前提条件一些绕过策略绕过__wakeup函数绕过正则匹配绕过相…...
视频级虚拟试衣技术在淘宝的产品化实践
作为一种新的商品表现形态,内容几乎存在于手淘用户动线全流程,例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力,能够从供给端缓解内容生产成本高的问题,通过源源不断的低成本供给…...
音视频-WAV格式
1. WAV格式说明: 2. 格式说明: chunkId:通常是 “RIFF” 四个字节,用于标识文件类型。(wav文件格式表示)chunkSize:表示整个文件除了chunkId和chunkSize这 8 个字节外的其余部分的大小。Forma…...
c++ std::array使用笔记
c array使用笔记 1. 构造2. 成员类型3. 元素访问4. 容量相关5. 填充与交换6. 比较操作7. 迭代器总结 array 是 C 标准库中的一个容器模板,它封装了一个固定长度的内建数组,并提供了类似于其他 STL 容器的接口。与内建数组相比, array 提供了…...
第39天:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化
时间轴: Java知识点: 功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方组件使用等. 框架库:MyBatis,SpringMVC,SpringBoot…...
浏览器JS打不上断点,一点就跳到其他文件里。浏览器控制台 js打断点,指定的位置打不上断点,一打就跳到其他地方了。
关闭JavaScript 源代码映射,F12开发者模式 设置->偏好设置->源代码/来源->JavaScript 源代码映射。 肯定不是这个原因导致的,但这个办法可以暂时解决问题,点完这个东西就隐藏了webpack,有懂的来讲讲。 又浪费一个小时…...
conda环境管理 kernel注册到jupyter notebook
本文核心目的:解决jupyter notebook找不到自己想要的指定conda环境 首先安装anaconda,在win搜索框打开anaconda prompt 按下ctrlc终止操作的时间很长。需要输入y来确认操作。 国内镜像源不能使用代理服务访问。要尝试代理服务的打开与关闭 下面是cond…...
【SpringBoot】【log】 自定义logback日志配置
前言:默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格…...
15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统
LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统 关键词:LangChain 销售系统、知识图谱集成、对话状态管理、生产级部署、多链协同优化 1. LangChain 销售系统架构设计 1.1 模块化架构全景图 #mermaid-svg-42MLuD3aMcpX0y8c {font-family:"trebuchet ms&q…...
计算机网络基础:揭开网络世界的神秘面纱
计算机网络基础:揭开网络世界的神秘面纱 前言一、计算机网络的定义与基本概念1.1 计算机网络的定义1.2 计算机网络的基本组成 二、计算机网络的分类2.1 按地域范围分类2.2 按拓扑结构分类 三、计算机网络体系结构3.1 OSI 参考模型3.2 TCP/IP 参考模型 四、网络通信协…...
工会考试知识点分享
工会考试涵盖工会基础知识、劳动法及相关法律法规、时政等内容,以下是一些常见的知识点分享: 工会基础知识 工会的性质与职能:工会是职工自愿结合的工人阶级的群众组织,基本职责是维护职工合法权益,同时还具有组织、…...
az devops login报错:Failed to authenticate using the supplied token.
PowerShell,az devops login报错: Failed to authenticate using the supplied token. 检查了一下PAT token是对的。 检查命令: az devops login --organization https://dev.azure.com/xxxxxxxx/ 乍一看好像没问题问题,然后想…...
Halcon图像预处理算子 sobel算子、傅里叶变换算子、卷积算子
滤波类型算子适用噪声特点均值滤波mean_image高斯噪声平滑均匀,可能额模糊边缘中值滤波median_image椒盐噪声保留边缘,抑制脉冲噪声高斯滤波gauss_filter高斯噪声加权平均,边缘更平滑 均值滤波 mean_image(Image,ImageMean,MaskWidth,MaskHe…...
Java Web应用中获取客户端的真实IP地址
Java Web应用中获取客户端的真实IP地址,尤其在存在代理服务器的情况下。 代码示例: public static String getClientIP(HttpServletRequest request) {String ip = parseCommaSeparatedIPs(request.getHeader("X-Forwarded-For"));if (isInvalid(ip)) {ip = pars…...
洛谷————P11559 【MX-X7-T0】[LSOT-3] 嗯欧哎
P11559 【MX-X7-T0】[LSOT-3] 嗯欧哎 题目背景 原题链接:MXOJ Next。 嗯欧哎是欧哎界的知名比赛。本题可以用来检验嗯欧哎是否发挥出了真实水平。 此名称纯属虚构,不影射任何现实中的比赛或机构的名称。如有雷同,纯属巧合。 题目描述 一…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
SpringCloud优势
目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...
