在Java语言中,存在一些具有特殊用途的预定义词汇,这些被称为关键字(Keywords)。由于它们已被语言本身占用,因此不能用于变量、类或方法等自定义标识符的命名。
此外,还有一类称为保留字(Reserved Words)的词汇。虽然当前版本中尚未启用,但Java为未来可能的功能扩展保留了这些词的使用权,因此也不建议开发者将其作为标识符使用。
Java关键字列表(共50个):
private, protected, publicabstract, class, extends, final, implements, interface, new, static, strictfp, enumbreak, continue, returnif, else, switch, case, defaultfor, while, dotry, catch, finally, throw, throwsimport, packageboolean, byte, char, double, float, int, long, short, voidsuper, thisinstanceofassert, const (保留字), goto (保留字), null, true, false, synchronized, transient, volatile示例说明:
// 编译错误!'class' 是关键字
int class = 5;
// 编译错误!'public' 是关键字
String public = "Hello";
接下来将针对不同类型的Java程序元素,详细阐述其命名规则,并提供实际编码示例以供参考。
命名要求:
com.google、org.apache、cn.edu.tsinghua。设计目的:
代码示例:
package com.example.myproject.util; // 域名倒置 + 项目模块
public class StringUtils {
// 工具类实现
}
命名约定:
-able、-ible、-er 等后缀结尾,强调某种能力或行为特征,如:Runnable、Comparable、List。主要目标:
代码示例:
public class Customer {
// 表示客户实体
}
public class OrderProcessor {
// 处理订单的业务类
}
public interface Printable {
void print();
}
public interface DataAccessObject {
// 数据访问接口
}
firstName, calculateTotalPrice。StudentManager, HttpClient。_ 分隔,多见于数据库字段或配置项命名,在Java中较少用于变量或方法,如:user_name, max_connection_count。i、j(常用于循环索引)或 temp(用于临时存储),但应限制其作用域。public class Student {
// 成员变量:camelCase,名词形式
private String studentName;
private int studentId;
private Date dateOfBirth;
public void enrollCourse(Course course) {
// 局部变量:camelCase,名词
String courseName = course.getName();
int credits = course.getCredits();
// ...
// 循环变量:简短且作用域小
for (int i = 0; i < 10; i++) {
// ...
}
}
}
public static final 修饰,一般置于类体顶部。public class MathConstants {
// 常量:全大写,下划线分隔
public static final double PI = 3.141592653589793;
public static final int MAX_INTEGER_VALUE = Integer.MAX_VALUE;
}
public interface ApplicationConfig {
String DEFAULT_ENCODING = "UTF-8";
int CONNECTION_TIMEOUT = 5000; // 毫秒
}
// 枚举类型名:PascalCase
public enum DayOfWeek {
// 枚举常量:全大写,下划线分隔
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
// 使用
DayOfWeek today = DayOfWeek.FRIDAY;
is 或 has 开头。public class Calculator {
// 方法名:camelCase,动词短语
public int add(int a, int b) {
return a + b;
}
public void displayResult() {
// ...
}
// 返回布尔值的方法,以 is 开头
public boolean isPositive(int number) {
return number > 0;
}
}
public class User {
private boolean active;
// 布尔类型 getter 方法,以 is 开头
public boolean isActive() {
return active;
}
}在泛型编程中,常用一些约定的单个字母来表示类型参数,例如:T(Type)、E(Element)、K(Key)、V(Value)和N(Number)。这些符号简洁通用,能快速传达其作为类型占位符的角色。
当泛型参数具有更明确的业务或功能含义时,可以采用更具描述性的字母,如R代表Response,P代表Payload,有助于提升代码的可读性。
目的:使用这类标识符的核心目标是保持命名简洁且易于识别,使开发者能够一眼分辨出这是泛型类型参数,而非具体类或变量。
代码示例:
// T 作为类型占位符
public class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
// K 表示键的类型,V 表示值的类型
public interface Map<K, V> {
V get(K key);
void put(K key, V value);
}
[此处为图片1]
calculateTotalUserCount() 比 calcUsrCnt() 更具可读性和维护性。data 或 info 这类词过于宽泛,建议替换为具体上下文相关的名称,如 userData 或 productInfo。m_userName(匈牙利命名法,在现代Java开发中已不推荐)、s_age、myName 等。a、b、x、temp,除非出现在极小的作用域内且用途明确。theVariableThatStoresTheNameOfTheCurrentUser。理想的命名应是在准确表达含义的同时保持精炼。String xingming; 或 int 价格;,这会破坏代码的国际化可读性,应坚决避免。// 错误示范!
int String = 10; // 与 java.lang.String 冲突
userName、UserName 和 username,会造成认知负担,降低可维护性。URL、ID、HTML)予以保留;一般情况下,usr 不如 user 清晰易懂。标识符是构建Java程序的基础元素,直接影响代码的可读性与长期可维护性。
编程不仅是技术实现,更是一种表达艺术。掌握命名的原则与技巧,意味着你有能力为每一个程序元素赋予恰当的名字。这种能力远比死记硬背规则列表更有价值。
希望本文能为你深入理解Java中的标识符命名提供全面指导。
扫码加好友,拉您进群



收藏
