Java 知识速记:全面解析 final 关键字

Java 知识速记:全面解析 final 关键字

什么是 final 关键字?

final 关键字是 Java 中的一个修饰符。它可以用于类、方法和变量,其作用是限制对这些元素的修改。究竟如何限制?我们来逐个分析。

final 在变量中的用法

1. 声明常量

当我们使用 final 修饰一个变量时,该变量就成为不可重新赋值的常量。一旦被初始化后,变量的值就不能再发生改变。

final int MAX_USERS = 100;
// MAX_USERS = 200; // 这行代码会导致编译错误

在上述例子中,MAX_USERS 被定义为常量,它的值为 100,不能再修改。

2. 引用类型变量

对于引用数据类型的变量,如果将其定义为 final,则意味着该变量所引用的对象的地址不可更改,但对象的内容是可以修改的。

final List<String> users = new ArrayList<>();
users.add("Alice");
// users = new ArrayList<>(); // 这行代码将导致编译错误

在这个例子中,users 引用的对象无法更改,但我们仍然可以修改该对象内部的内容。

final 在方法中的用法

1. 防止方法被重写

当一个方法被声明为 final 时,子类不能重写该方法。这对于想要保护方法的实现细节以及确保其行为不被修改的类尤其重要。

class BaseClass {final void show() {System.out.println("我是一个最终方法");}
}class SubClass extends BaseClass {// void show() { // 这行代码将导致编译错误//     System.out.println("尝试覆盖最终方法");// }
}

通过这种方式,我们可以确保 show 方法的逻辑在基类中保持不变,子类无法擅自修改。

final 在类中的用法

1. 防止类被继承

当一个类被声明为 final 时,该类不能被其他类继承。这在某些情况下可以保持类的封装性和安全性。

final class ImmutableClass {// 类的实现
}// class SubClass extends ImmutableClass { // 这行代码将导致编译错误
// }

这种做法确保了 ImmutableClass 的实现不会因为子类的存在而被改变。

使用 final 关键字的优势

  • 提高代码安全性:通过限制类、方法和变量的修改,可以有效避免意外更改导致的错误。
  • 提高性能:在某些情况下,Java 编译器可以优化 final 定义的变量和方法,提高运行效率。
  • 增强可读性:使用 final 显示了开发者对代码意图的清晰表达,帮助其他人理解代码。

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

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

相关文章

拒绝 Github 投毒,通过 Sharp4SuoBrowser 分析 Visual Studio 隐藏文件

近期的网络安全事件中&#xff0c;某提权工具被发现植入后门&#xff0c;攻击者使用 .suo 文件作为隐蔽攻击媒介。由于 .suo 文件是项目的隐藏配置文件&#xff0c;安全研究人员很少关注它的内容。 此次攻击事件被初步判断为东南亚地区的 APT 组织——海莲花&#xff08;Lotus…

shiro学习五:使用springboot整合shiro。在前面学习四的基础上,增加shiro的缓存机制,源码讲解:认证缓存、授权缓存。

文章目录 前言1. 直接上代码最后在讲解1.1 新增的pom依赖1.2 RedisCache.java1.3 RedisCacheManager.java1.4 jwt的三个类1.5 ShiroConfig.java新增Bean 2. 源码讲解。2.1 shiro 缓存的代码流程。2.2 缓存流程2.2.1 认证和授权简述2.2.2 AuthenticatingRealm.getAuthentication…

Edge-TTS在广电系统中的语音合成技术的创新应用

Edge-TTS在广电系统中的语音合成技术的创新应用 作者&#xff1a;本人是一名县级融媒体中心的工程师&#xff0c;多年来一直坚持学习、提升自己。喜欢Python编程、人工智能、网络安全等多领域的技术。 摘要 随着人工智能技术的快速发展&#xff0c;文字转语音&#xff08;Te…

python3+TensorFlow 2.x(二) 回归模型

目录 回归算法 1、线性回归 (Linear Regression) 一元线性回归举例 2、非线性回归 3、回归分类 回归算法 回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型&#xff0c;以便根据输入特征预测目标变量&#xff0c;在使用 TensorFlow 2.x 实现线性回归模型时&…

HarmonyOS应用开发快速入门

本节内容将帮助开发者学习如何构建一个全新的HarmonyOS应用&#xff0c;学习使用DevEco Studio创建新项目、使用预览器预览页面、了解基础组件如Image、Text等。 文章目录 一、介绍二、创建一个新项目三、页面结构总览四、自定义文本视图五、创建Image组件 一、介绍 根据本教程…

高级编码参数

1.跳帧机制 参考资料&#xff1a;frameskipping-hotedgevideo 跳帧机制用于优化视频质量和编码效率。它通过选择性地跳过某些帧并使用参考帧来预测和重建视频内容&#xff0c;从而减少编码所需的比特率&#xff0c;同时保持较高的视频质量。在视频编码过程中&#xff0c;如果…

CUDA学习-内存访问

一 访存合并 1.1 说明 本部分内容主要参考: 搞懂 CUDA Shared Memory 上的 bank conflicts 和向量化指令(LDS.128 / float4)的访存特点 - 知乎 1.2 share memory结构 图1.1 share memory结构 放在 shared memory 中的数据是以 4 bytes(即 32 bits)作为 1 个 word,依…

信息学奥赛一本通 1342:【例4-1】最短路径问题

【题目描述】 平面上有n个点&#xff08;n<100&#xff09;&#xff0c;每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线&#xff0c;则表示可从一个点到达另一个点&#xff0c;即两点间有通路&#xff0c;通路的距离为两点间的直线距离。现在的任务是…

「AI学习笔记」深度学习进化史:从神经网络到“黑箱技术”(三)

在这篇文章中&#xff0c;我们将探讨深度学习&#xff08;DL&#xff09;这一领域的最新发展&#xff0c;以及它如何从传统机器学习&#xff08;ML&#xff09;中独立出来&#xff0c;成为一个独立的生态系统。深度学习的核心思想与我们大脑中的神经网络高度相似&#xff0c;因…

On to OpenGL and 3D computer graphics

2. On to OpenGL and 3D computer graphics 声明&#xff1a;该代码来自&#xff1a;Computer Graphics Through OpenGL From Theory to Experiments&#xff0c;仅用作学习参考 2.1 First Program Square.cpp完整代码 /// // square.cpp // // OpenGL program to draw a squ…

蓝桥杯练习日常|递归-进制转换

蓝桥云课760数的计算 一、递归 题目&#xff1a; 我的解题代码&#xff1a; #include <iostream> using namespace std; int sum0; int main() {// 请在此输入您的代码int n;cin>>n;int fun(int n);fun(n); cout<<sum<<\n;return 0; } // void fu…

17、智能驾驶硬件架构安全设计一般原则

这段文字详细描述了硬件安全架构设计的一系列要求和原则&#xff0c;涵盖了从基本设计原则到具体实现细节和验证要求&#xff1a; 一、基本设计原则 平衡冗余与复杂度&#xff1a;硬件安全架构需平衡硬件冗余设计和故障检测回路以提高容错能力&#xff0c;同时降低硬件复杂度…

WordPress使用(1)

1. 概述 WordPress是一个开源博客框架&#xff0c;配合不同主题&#xff0c;可以有多种展现方式&#xff0c;博客、企业官网、CMS系统等&#xff0c;都可以很好的实现。 官网&#xff1a;博客工具、发布平台和内容管理系统 – WordPress.org China 简体中文&#xff0c;这里可…

镭速大文件传输自动选择压缩算法原理

目前&#xff0c;在文件传输系统里&#xff0c;大家通常会在数据传输之前先把数据压缩一下&#xff0c;这样传输起来更方便。不过&#xff0c;现在的情况是&#xff0c;不同平台都用同一种压缩算法&#xff0c;但其实不同的压缩算法在不同平台上表现差别挺大的。如果不在意平台…

JAVA实战开源项目:在线文档管理系统(Vue+SpringBoot) 附源码

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

网站快速收录:利用新闻源的优势

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/23.html 网站快速收录的过程中&#xff0c;利用新闻源的优势可以显著提升收录速度和效果。以下是对如何利用新闻源优势实现网站快速收录的详细阐述&#xff1a; 一、新闻源的优势 传播速度…

【玩转全栈】----Django基本配置和介绍

目录 Django基本介绍&#xff1a; Django基本配置&#xff1a; 安装Django 创建项目 创建app 注册app Django配置路由URL Django创建视图 启动项目 Django基本介绍&#xff1a; Django是一个开源的、基于Python的高级Web框架&#xff0c;旨在以快速、简洁的方式构建高质量的Web…

机器学习周报-文献阅读

文章目录 摘要Abstract 1 相关知识1.1 WDN建模1.2 掩码操作&#xff08;Masking Operation&#xff09; 2 论文内容2.1 WDN信息的数据处理2.2 使用所收集的数据构造模型2.2.1 Gated graph neural network2.2.2 Masking operation2.2.3 Training loss2.2.4 Evaluation metrics 2…

TensorFlow 2基本功能和示例代码

TensorFlow 2.x 是 Google 开源的一个深度学习框架&#xff0c;广泛用于构建和训练机器学习模型。 一、核心特点 1. Keras API 集成 TensorFlow 2.x 将 Keras 作为其核心 API&#xff0c;简化了模型的构建和训练流程。Keras 提供了高层次的 API&#xff0c;易于使用和理解。…

Visual Studio Code修改terminal字体

个人博客地址&#xff1a;Visual Studio Code修改terminal字体 | 一张假钞的真实世界 默认打开中断后字体显示如下&#xff1a; 打开设置&#xff0c;搜索配置项terminal.integrated.fontFamily&#xff0c;修改配置为monospace。修改后效果如下&#xff1a;