java中定义常量需用public static final修饰,确保类级共享与不可变;命名严格采用全大写加下划线(如max_retry、db_url),以提升可读性与规范性。

Java 中定义常量靠 final 关键字,核心是“值不可变”;命名则严格遵循全大写+下划线分隔的规范,目的是让代码一眼可读、不易误改。
常量定义的三种常见方式
实际开发中,最常用的是以下三类定义场景:
-
类级静态常量(推荐):用
public static final修饰,属于类本身,可通过类名直接访问。例如:public static final int MAX_RETRY = 3;public static final String DB_URL = "jdbc:mysql://localhost:3306/app"; -
局部常量:在方法内部用
final声明,只在当前作用域有效,不可重新赋值。例如:final double TAX_RATE = 0.08; -
枚举常量(适合固定集合):当值是有限且语义明确的一组时,优先用
enum。例如:enum HttpStatus { OK(200), NOT_FOUND(404), SERVER_ERROR(500); }
命名必须遵守的规则
Java 社区和主流规范(如 Oracle 官方、Google Java Style Guide)一致要求:
- 所有字母大写,单词之间用下划线
_连接,比如DEFAULT_TIMEOUT、API_VERSION - 不能用驼峰(如
defaultTimeout)或小写(如maxusers),否则会降低可识别性 - 避免使用数字开头、连字符(
-)、空格或中文——这些会导致编译失败或风格混乱 - 名称需见名知意,不建议缩写模糊的词,如
USR_NM不如USER_NAME
为什么必须加 static 和 public?
单独用 final 只能保证“不可变”,但要实现真正的“常量效果”,还需结合修饰符:
-
static:让变量属于类而非实例,节省内存,且无需创建对象就能通过类名调用 -
public:方便其他类引用(若仅本类使用,可用private,但依然要static final) - 缺
static的final字段,每个对象都会有一份副本,失去常量共享意义
注意区分:常量 vs 字面量 vs 编译期常量
不是所有带 final 的都是“编译期常量”,这点影响字符串池、switch 支持等细节:
-
public static final String NAME = "Alice";→ 是编译期常量(值在编译时确定) -
public static final String NAME = new String("Alice");→ 不是编译期常量(运行时才创建) - 只有编译期常量才能用于
case标签、注解属性等需要编译时已知值的场景
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











