java静态变量命名依语义区分:public static final常量用全大写下划线(如page_size);非final静态变量和private static变量均用小驼峰(如currentversion、instancecounter),禁用前缀与下划线,确保命名直接表达可变性、作用域与用途。

Java 中静态变量的命名规范核心在于“区分语义”——根据是否可变、是否公开、是否常量,采用不同风格,而不是统一用一种写法。
public static final 常量:全大写 + 下划线
这是最明确、最无争议的一类。只要被 final 修饰且值不可变,就视为常量,必须使用全大写字母,单词间用下划线分隔。
- PAGE_SIZE、DEFAULT_TIMEOUT_MS、MAX_RETRY_COUNT
- 避免缩写模糊:比如用 HTTP_STATUS_CODE 而不是 HTTP_SC
- IDE 和 Checkstyle 等工具默认按此规则校验,违反会直接报 warning
非 final 的 public/protected/package-private 静态变量:小驼峰
这类变量属于类级别状态,可能被外部修改或共享,命名要体现其“可变性”,与常量形成视觉区隔。
- currentVersion、configCache、sharedCounter
- 不加前缀(如 s_)、不用下划线、不全大写——这些都会干扰语义判断
- 即使被多个实例共用,也按普通变量逻辑命名,强调它是“类的状态”,而非“配置常量”
private static 变量:同样用小驼峰
私有静态变量虽不对外暴露,但仍是类级数据,命名仍需清晰表达用途,且保持风格统一。
- instanceCounter、logger、lastUpdateTime
- 不推荐用 s_instanceCounter 或 m_staticCache 这类匈牙利前缀,现代 Java 社区已普遍弃用
- 如果只是临时缓存或计数器,名字应带业务含义,比如 pendingRequestCount 比 count 更安全
关键原则:不靠修饰符猜含义,靠命名本身说清楚
static 关键字只说明生命周期和作用域,不说明是否可变。命名必须承担起传达“是否常量”“是否共享”“是否内部使用”的职责。
- 看到 DEFAULT_PORT 就知道它不会变,且可直接引用
- 看到 activeConnectionPool 就知道它是运行时可变的共享资源
- 看到 serialVersionUID 是特例(JVM 机制要求),不属于常规命名范畴,不必模仿
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











