JAVA final修饰符
final修饰符可以修饰类、所有变量、方法。
当final修饰成员变量(类变量或实例变量)时:
普通成员变量系统默认赋值,但由final修饰时,必须由程序员指定初始值,因为final修饰的变量只能被赋值一次,成为常量。
如果是实例变量,只能在以下三个地方指定初始值:
1.声明时。
2.非static初始化块。
3.构造器。
如果是类变量,只能在以下两个地方指定初始值:
1.声明时。
2.static初始化块。
当final修饰局部变量(方法中、代码块中或形参)时:
final局部变量依然要程序员手动初始化,一旦初始化后就不能变了。
final修饰的变量如果声明时指定了初始值并且编译时就能确定,则会进行宏替换,即编译后的代码中的final修饰的变量名全变为了具体值,而声明语句就相当于不存在,如:
final String a = "a";
final String b = "b";
final String c = "c";
final String d = a + b + c;
System.out.println(d);
以上代码中有1个对象,0个变量。编译后与以下代码编译后效果相同:
System.out.println("abc");
final方法:
被final修饰的方法不能被重写。
需注意,final与private配合使用无意义,因为子类中出现的重写的private方法不算重写。
final类:
final修饰的类不能有子类。如String、System、Math、基本类型的包装类等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)