1. 什么是标识符?
在Java中,变量、方法、类等需要命名时使用的字符序列,称为 标识符(Identifier)。
使用技巧:凡是需要自定义名字的地方都叫标识符。如:类名、方法名、变量名、包名、常量名等。
2. 标识符的命名规则(合法条件)
Java标识符必须遵守如下硬性规则,否则编译不通过:
- 由26个英文字母的大小写(A-Z, a-z),数字(0-9),下划线(_),美元符号($)。
- 不能以数字开头。
- 不能使用Java的关键字和保留字,但可以包含关键字和保留字。
- 不能使用字面量
true、false、null。
- Java中严格区分大小写,长度无限制,但建议控制在合理范围(15~20字符为宜)。
- 标识符不能包含空格
3. 标识符的命名规范(约定俗成)
虽然编译器不强制,但遵守以下规范能让代码更专业、可读性更高,如果不遵守,虽然编译和运行可以正常运行,但容易被人鄙视!
| 程序元素 |
命名规范 |
示例 |
| 包名 |
全小写,域名倒序,单词之间用点分隔 |
com.example.util |
| 类名、接口名 |
大驼峰命名法(每个单词首字母大写) |
Student, ArrayList, Runnable |
| 方法名、变量名 |
小驼峰命名法(首字母小写,后续单词首字母大写) |
getAge(), studentName |
| 常量 |
全大写,单词间用下划线分隔 |
MAX_VALUE, DEFAULT_TIMEOUT |
| 类型参数(泛型) |
单个大写字母,常用 T, E, K, V |
class Box |
命名时尽量见名知意,使用完整单词而非拼音,避免使用 a、b、c 等无意义缩写(临时循环变量除外)。
4. 合法与非法标识符示例
| 标识符 |
是否合法 |
说明 |
| _count |
✅ |
合法,但不推荐 |
| $value |
✅ |
合法,但不推荐 |
| studentName |
✅ |
规范,小驼峰 |
| StudentName |
✅ |
合法,但通常用于类名 |
| MAX_SIZE |
✅ |
合法,常量命名 |
| class |
❌ |
关键字 |
| 123abc |
❌ |
数字开头 |
| my name |
❌ |
包含空格 |
| user-name |
❌ |
包含减号(减号不是合法字符) |
| int |
❌ |
关键字 |
| true |
❌ |
布尔字面量 |
| 年龄 |
✅ |
合法,但不推荐 |
| String |
✅ |
合法,但会遮蔽 java.lang.String |
5. 注意事项与常见误区
-
避免使用美元符号 $ 和下划线 _ 开头
虽然合法,但 $ 在编译器内部有特殊用途(如内部类编译后的文件命名),下划线开头易与系统变量混淆。
✅ 推荐:name, age, calculateTotal
⚠️ 不推荐:_name, $value
-
不要与Java标准库类名冲突
即使不是关键字,使用与JDK常用类相同的名称也会造成混淆,降低可读性。
❌错误: class String { ... } 虽然合法,但会覆盖 java.lang.String,导致无法正常使用字符串。
-
可以使用Unicode字符,但应谨慎
Java支持Unicode标识符(如中文、希腊字母),但在跨平台、编码不统一时容易引发乱码。
❌ 不推荐:int 年龄 = 20;
✅ 推荐:int age = 20;
-
标识符中不能有空格或特殊符号
❌ my name, user@name, first-name 非法
-
数字不能放在开头,但可以放在中间或结尾
✅ num1, count2, value3
❌ 1num
6. 最佳实践总结
来源:https://www.cnblogs.com/lisong0626/p/19807410 |