static final 的含义和作用
在Java中,static final
结合使用具有特定的含义和用途:
static final
的含义和作用
-
static
:static
修饰符表示该字段或方法属于类本身,而不是类的实例。也就是说,static
字段或方法被所有实例共享,而不是每个实例都有自己的副本。static
字段或方法在类加载时初始化,并且在整个程序运行期间只有一份拷贝。
-
final
:final
修饰符表示该字段一旦初始化后,其值不能被改变。对于final
字段,这意味着它必须在定义时或构造函数中被初始化,并且之后不能再修改。
当static
和final
一起使用时,通常表示一个类级别的常量。这样做的好处是,这个常量的值在整个程序中是共享的,并且在定义后不能被修改。
使用场景
-
定义常量:
static final
通常用于定义常量,这些常量在程序运行时不会改变。常量通常用大写字母命名,并用下划线分隔。
-
共享数据:
- 由于
static
字段是类级别的,它们在所有实例之间共享。如果常量是共享的且不会改变,使用static final
是很合适的。
- 由于
示例
1. 定义常量
public class MathConstants {
public static final double PI = 3.141592653589793;
public static final int MAX_SIZE = 100;
}
在这个示例中,PI
和MAX_SIZE
是类级别的常量。由于它们是static
的,所有实例共享相同的值;由于它们是final
的,它们的值在初始化后不能更改。
2. 使用常量
public class Circle {
public double getCircumference(double radius) {
return 2 * MathConstants.PI * radius;
}
}
在这个示例中,Circle
类使用MathConstants.PI
常量来计算圆周长。PI
常量在程序的任何地方都保持不变且共享。
3. static final
字段的初始化
-
静态初始化:
static final
字段可以在定义时直接初始化,如上例中的PI
和MAX_SIZE
。
-
静态块初始化:
- 如果常量的初始化比较复杂,可以使用静态初始化块:
public class Configuration { public static final String CONFIG_VALUE; static { // 静态初始化块 CONFIG_VALUE = "some value"; } }
总结
static
:表示字段或方法属于类本身,而不是实例,所有实例共享。final
:表示字段的值在初始化后不能被改变。static final
:通常用于定义类级别的常量,这些常量在程序运行期间是共享的,并且其值不可修改。
使用static final
关键字定义常量能够提高代码的可读性和可维护性,并且避免了硬编码的魔法数字或字符串。
分类:
后端 / Java学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
2023-07-25 Ubuntu20.04 文件管理器无法打开
2023-07-25 Ubuntu编译安装GDAL
2023-07-25 CMake Error at CMakeLists.txt: No CMAKE_CXX_COMPILER could be found.
2023-07-25 docker停止所有容器并删除
2023-07-25 ubuntu安装OpenJDK 17,并配置环境变量
2023-07-25 Ubuntu输入su提示认证失败的解决方法
2022-07-25 ArcGIS api for JS三种查询方法比较