Java 标识符的合法规则
一个合法的 Java 标识符必须遵守以下规则:

-
组成字符:
- 字母:所有 Unicode 字母,包括英文字母(
a-z,A-Z)和中文、日文、俄文等。 - 数字:
0-9。 - 货币符号: (美元符号)、 (人民币符号)、 (欧元符号) 等。
- 连接符:
_(下划线)。
- 字母:所有 Unicode 字母,包括英文字母(
-
不能以数字开头:标识符的第一个字符不能是数字。
-
不能是 Java 关键字或保留字:标识符不能是 Java 语言已经定义好的关键字(如
public,class,void,if等)或用于特殊上下文的保留字(如const,goto)。 -
区分大小写:
myVar和myvar是两个完全不同的标识符。
(图片来源网络,侵删)
合法的 Java 标识符示例
以下这些都是合法的 Java 标识符:
userName(驼峰命名法,推荐用于变量和方法名)StudentID(帕斯卡命名法,推荐用于类名和接口名)_privateVariable(以下划线开头,常用于表示内部或私有变量)$price(以美元符号开头,合法但不常用)count_123(包含数字和下划线)年龄(使用中文作为标识符,完全合法,但通常不推荐,以免造成团队协作困难)- (使用希腊字母,合法)
MAX_VALUE(常量命名,全大写,单词间用下划线分隔)
非法的 Java 标识符示例
以下这些都是非法的 Java 标识符,以及它们错误的原因:
123abc(错误):不能以数字开头。user-name(错误):包含了连字符 ,Java 标识符不允许使用。class(错误):是 Java 的关键字,不能用作标识符。public static(错误):包含了空格,标识符必须是连续的字符。my variable(错误):包含了空格。@home(错误):包含了 符号,不在允许的字符范围内。true(错误):是 Java 的布尔字面量,虽然不是关键字,但也不能用作标识符。
总结表格
| 标识符示例 | 是否合法 | 原因 |
|---|---|---|
userName |
合法 | 符合所有规则。 |
_count |
合法 | 以下划线开头是允许的。 |
$value |
合法 | 以美元符号开头是允许的。 |
变量名 |
合法 | 允许使用非英文字母。 |
2ndPlace |
非法 | 不能以数字开头。 |
my-variable |
非法 | 包含了非法字符 。 |
if |
非法 | 是 Java 关键字。 |
public |
非法 | 是 Java 关键字。 |
user name |
非法 | 包含了空格。 |
编译器提示
当你尝试编译一个包含非法标识符的 Java 文件时,编译器会报错,并明确指出问题所在。
// 文件: Test.java
public class Test {
public static void main(String[] args) {
int 123number = 10; // 非法标识符
}
}
编译时,你会看到类似以下的错误信息:

Test.java:4: error: not a statement
int 123number = 10;
^
Test.java:4: error: ';' expected
int 123number = 10;
^
这个错误清晰地指出了在 123number 这个位置出现了问题。
希望这个详细的解释能帮助你完全理解 Java 标识符的规则!
