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、基本类型的包装类等。

posted @   epiphanyy  阅读(6)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示