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

Java中的final关键字【最通俗易懂】

一、前言

  • 在 Java 中,final 关键字用于定义不可变的实体,可以修饰变量、方法和类

二、final变量

  • 被 final 修饰的变量只能赋值一次,后续不可修改

1.基本类型变量:值不可变

final int age = 25;
// age = 30; // 编译错误:无法修改 final 变量

2.引用类型变量:引用不可变(对象内部状态可修改)

final List<String> list = new ArrayList<>();
list.add("Hello"); // 允许修改对象内容
// list = new ArrayList<>(); // 编译错误:不能重新指向新对象

3.final 实例变量:必须在声明时或构造函数中初始化

class Person {final String name; // 未直接初始化public Person(String name) {this.name = name; // 构造函数中初始化}
}

4.final 静态变量(常量):通常全大写命名

class Constants {public static final double PI = 3.14159;// public static final int MAX_SIZE; // 编译错误:未初始化
}

三、final方法

  • 被 final 修饰的方法不能被子类重写
class Parent {public final void show() {System.out.println("Parent 的 final 方法");}
}class Child extends Parent {// 编译错误:无法重写 final 方法// @Override// public void show() { ... }
}

四、final类

  • 被 final 修饰的类不能被继承
final class ImmutableClass { // 不可继承的类// 类内容
}// 编译错误:无法继承 final 类
// class SubClass extends ImmutableClass { ... }

五、final参数

  • 方法参数被 final 修饰后,方法内部不可修改其值
public void printValue(final int x) {// x = x + 1; // 编译错误:不能修改 final 参数System.out.println(x);
}

六、总结

  • 变量:值或引用不可变(引用类型对象内容可变)。
  • 方法:禁止子类重写。
  • :禁止继承。
  • 参数:方法内不可修改参数值。
  • 合理使用 final 能提升代码安全性和可读性,例如设计不可变对象(如 String)或定义常量。
http://www.xdnf.cn/news/2250.html

相关文章:

  • 【Linux网络#1】:网络基础知识
  • Redux基础知识
  • 论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization
  • MCP协议:AI与数据世界的“万能连接器“
  • 作为无线信号传输如何理解WIFI信号本质上也是串行传输?
  • 基于先进MCU的机器人运动控制系统设计:理论、实践与前沿技术
  • 【C++11】右值引用和移动语义:万字总结
  • 如何选择游戏支付平台呢?
  • RabbitMQ安装流程(Windows环境)
  • 数据库MySQL学习——day5(总结与复习实践)
  • 【新技术】Testfy.js v3.0 深度解析与使用指南
  • linux系统之----命令行参数和环境变量
  • xVerify:推理模型评估的革新利器,重塑LLM答案验证格局?
  • OpenFeign 快速开始
  • C++:string 1
  • YTJ笔记——FFT、NCC
  • Maven的聚合工程与继承
  • Pygame动画实战:让游戏角色动起来!
  • Java24 抗量子加密:后量子时代的安全基石
  • 华为盘古OS深度评测:构建AI自进化系统的实践密码
  • 第一性原理 | 从哲学本源到多领域实践的探索与应用
  • 腾讯二面:TCC分布式事务 | 图解TCC|用Go语言实现一个TCC
  • MyBatis 常用扩展组件详解(含代码示例)
  • 有源晶振与无源晶振详解:区别、应用与选型指南
  • 计算机视觉中的二值马尔科夫随机场
  • 代码随想录算法训练营第五十九天 | 1.ford算法精讲 卡码网94.城市间货物运输
  • 长短板理论——AI与思维模型【83】
  • 如何在 Windows 10 中使用 WSL 和 Debian 安装 Postgresql 和 Postgis
  • Vue3的内置组件 -实现过渡动画 TransitionGroup
  • 计算机二级MS Office第九套演示文稿