Java定义常量的核心方式是public static final修饰符组合,配合全大写下划线命名;需在声明时或静态代码块中初始化;接口中默认字段为public static final但不推荐;枚举更适合类型安全、具行为的常量场景。
Java中定义常量的核心方式是使用 public static final 修饰符组合,配合大写命名约定。它不是语言层面的独立关键字(如C#的const),而是通过语义约束实现“不可变”的效果。
常量必须满足三个条件:公开访问、属于类级别、运行期不可修改。典型写法如下:
private)MAX_RETRY_COUNT 或 DEFAULT_TIMEOUT_MS
示例:
public static final int MAX_CONNECTIONS = 100;final 变量必须在声明时或构造器/静态代码块中完成初始化,否则编译报错。对于静态常量,只能在声明处或静态代码块中赋值:
static final 赋值错误示例:
public static final long START_TIME; // 编译失败:未初始化Java允许在接口中声明字段,默认就是 public static final,所以以下写法等价:
interface Config { int VERSION = 1; }public static final int VERSION = 1;
但这种用法已过时,容易造成语义混淆(接口应描述行为,而非存储数据),现代项目中建议统一用 class 或 enum 管理常量。
当常量具有行为、关联数据或需要类型安全时,优先使用 enum:
示例:
public e
num HttpStatus {