08_Java 变量命名规则
Java 局部变量、实例变量、静态变量、常量、参数、类名的命名规范
在 Java 中,不同类型的变量(例如实例变量、局部变量、静态变量等)有一些命名规则和约定。
遵循一些基本规则,这有助于提高代码的可读性和维护性。
以下是各种变量命名规则的概述:
-
使用有意义的名字: 变量名应该具有清晰的含义,能够准确地反映变量的用途。避免使用单个字符或无意义的缩写。
-
驼峰命名法(Camel Case): 在变量名中使用驼峰命名法,即将每个单词的首字母大写,除了第一个单词外,其余单词的首字母都采用大写形式。例如:
myVariableName。 -
避免关键字: 不要使用 Java 关键字(例如,class、int、boolean等)作为变量名。
-
区分大小写: Java 是大小写敏感的,因此变量名中的大小写字母被视为不同的符号。例如,
myVariable和myvariable是两个不同的变量。 -
不以数字开头: 变量名不能以数字开头,但可以包含数字。
-
遵循命名约定: 对于不同类型的变量(局部变量、实例变量、静态变量等),可以采用不同的命名约定,例如使用前缀或后缀来区分。
局部变量
- 使用驼峰命名法。
- 应该以小写字母开头。
- 变量名应该是描述性的,能够清晰地表示其用途。
int myLocalVariable;
实例变量(成员变量)
- 使用驼峰命名法。
- 应该以小写字母开头。
- 变量名应该是描述性的,能够清晰地表示其用途。
private int myInstanceVariable;
静态变量(类变量)
- 使用驼峰命名法,应该以小写字母开头。
- 通常也可以使用大写蛇形命名法,全大写字母,单词之间用下划线分隔。
- 变量名应该是描述性的,能够清晰地表示其用途。
// 使用驼峰命名法
public static int myStaticVariable;
// 使用大写蛇形命名法
public static final int MAX_SIZE = 100;
常量
- 使用全大写字母,单词之间用下划线分隔。
- 常量通常使用
final修饰。
public static final double PI = 3.14;
参数
- 使用驼峰命名法。
- 应该以小写字母开头。
- 参数名应该是描述性的,能够清晰地表示其用途。
public void myMethod(int myParameter) {
// 方法体
}
类名
- 使用驼峰命名法。
- 应该以大写字母开头。
- 类名应该是描述性的,能够清晰地表示其用途。
public class MyClass {
// 类的成员和方法
}
接口名
- 使用大写字母开头的驼峰命名法,与类名规则一致。
- 现代 Java 命名规范更倾向于使用描述能力的名词,而非
I前缀(旧式 C# 风格)。
// 推荐(描述能力)
public interface Runnable { ... }
public interface Serializable { ... }
public interface Comparable<T> { ... }
// 不推荐(IFoo 前缀是旧习惯)
public interface IAnimal { ... }
枚举名与枚举常量
- 枚举类名:大写字母开头的驼峰命名法,通常是单数名词。
- 枚举常量:全大写,单词间用下划线分隔。
public enum DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public enum HttpStatus {
OK(200), NOT_FOUND(404), INTERNAL_SERVER_ERROR(500);
private final int code;
HttpStatus(int code) { this.code = code; }
}
方法名
- 使用小写字母开头的驼峰命名法(与局部变量相同)。
- 通常以动词开头,清楚描述方法的行为。
// 动词 + 名词
public void sendEmail(String to) { ... }
public String getUserName() { ... }
public boolean isValid() { ... } // 布尔值方法以 is/has/can 开头
public void calculateTotal() { ... }
// getter / setter 约定
private String name;
public String getName() { return name; } // getXxx
public void setName(String name) { this.name = name; } // setXxx
包名
- 全部小写,单词间不用下划线(直接拼写),用点分层级。
- 通常以公司域名倒序开头,确保唯一性。
// 规范格式:com.公司名.项目名.模块名
com.example.blog.controller
com.example.blog.service
com.example.blog.repository
// 不推荐
com.Example.Blog // 有大写
com.example_blog // 有下划线
命名规则速查
| 类型 | 命名风格 | 示例 |
|---|---|---|
| 类 / 接口 / 枚举 / Record | 大驼峰(PascalCase) | UserService, Runnable, DayOfWeek |
| 方法 / 变量(局部、实例、参数) | 小驼峰(camelCase) | getUserName(), firstName |
| 常量(static final) | 全大写下划线 | MAX_SIZE, HTTP_TIMEOUT |
| 枚举常量 | 全大写下划线 | MONDAY, NOT_FOUND |
| 包名 | 全小写点分隔 | com.example.blog.service |