Java 关键字与标识符详解笔记

85 阅读3分钟

Java 关键字(Keywords)

1. 访问控制关键字

java

public     // 公共的,对所有类可见
protected  // 受保护的,对同一包和子类可见
private    // 私有的,仅对本类可见

2. 类、方法、变量修饰符

java

class     // 定义类
interface // 定义接口
enum      // 定义枚举
abstract  // 抽象类或方法
final     // 最终的,不可继承/重写/修改
static    // 静态的,类级别
synchronized // 同步的,线程安全
transient // 瞬态的,不参与序列化
volatile  // 易变的,多线程可见性

3. 程序控制语句

java

// 条件语句
if, else, switch, case, default

// 循环语句
for, while, do, break, continue

// 返回语句
return

// 异常处理
try, catch, finally, throw, throws

// 断言
assert

4. 基本类型相关

java

// 数据类型
byte, short, int, long
float, double
char, boolean
void      // 无返回值

// 字面值
true, false, null

5. 类关系相关

java

extends    // 继承类
implements // 实现接口
import     // 导入包
package    // 定义包
this       // 当前对象
super      // 父类对象
new        // 创建对象
instanceof // 类型检查

6. 其他重要关键字

java

native     // 本地方法
strictfp   // 严格浮点计算

📛 标识符(Identifiers)

1. 标识符命名规则

java

// ✅ 合法的标识符
String userName;      // 驼峰命名
int _count;           // 以下划线开头
double $price;        // 以美元符号开头
String 变量名;        // 可以使用中文(但不推荐)

// ❌ 非法的标识符
int 123abc;          // 不能以数字开头
String user-name;    // 不能包含连字符
double public;       // 不能是关键字
int user name;       // 不能包含空格

2. 命名规范(约定俗成)

类型规范示例
类名大驼峰(PascalCase)UserServiceStudentDao
接口名大驼峰(PascalCase)RunnableComparable
方法名小驼峰(camelCase)getUserName()calculateSum()
变量名小驼峰(camelCase)userNametotalCount
常量名全大写,下划线分隔MAX_VALUEPI
包名全小写,点分隔com.example.project

3. 标识符组成规则

  • 首字符:字母、下划线(_)、美元符号($)
  • 后续字符:字母、数字、下划线、美元符号
  • 长度:无限制,但建议有意义且简洁
  • 大小写敏感userName 和 username 是不同的

🔍 关键字 vs 标识符 对比表

特性关键字(Keywords)标识符(Identifiers)
作用Java语言预定义,有特殊含义程序员自定义,用于命名
数量50个(Java 8)无限个
大小写全部小写大小写敏感
可否修改不可修改可以任意命名
示例classpublicstaticuserNamecalculateSum()

💡 记忆技巧与注意事项

1. 关键字记忆分类

java

// 访问控制(3个):public, protected, private
// 类定义(3个):class, interface, enum
// 数据类型(8个):byte, short, int, long, float, double, char, boolean
// 流程控制(12个):if, else, switch, case, default, for, while, do, break, continue, return
// 异常处理(6个):try, catch, finally, throw, throws, assert
// 修饰符(11个):abstract, final, static, synchronized, transient, volatile, native, strictfp
// 其他(7个):new, this, super, instanceof, extends, implements, package, import

2. 常见错误示例

java

// ❌ 错误:使用关键字作为标识符
int public = 10;      // 编译错误
String class = "Test"; // 编译错误

// ✅ 正确:避开关键字
int publicCount = 10;  // 可以包含关键字作为一部分
String className = "Test";

// ❌ 错误:非法字符
int user@name = 1;     // @不是合法字符
double price# = 99.9;  // #不是合法字符

// ❌ 错误:数字开头
int 1stNumber = 1;     // 不能以数字开头
String 2ndName = "Tom";

3. 特殊标识符注意事项

java

// 虽然合法但不推荐
String _ = "下划线";   // 单个下划线(Java 9+不推荐)
int $ = 100;          // 单个美元符号

// 保留字(不是关键字但保留使用)
var   // Java 10+ 局部变量类型推断
_     // Java 9+ 单个下划线不再允许作为标识符

📚 实践练习

练习1:判断下列标识符是否合法

java

// 判断并说明理由:
1. int age;
2. String 2name;
3. double $salary;
4. boolean is-valid;
5. char _initial;
6. float public;
7. String firstName;
8. int num#;

练习2:改进命名

java

// 改进以下标识符:
int a;                      // 应改为:int age;
String n;                   // 应改为:String name;
void f() {}                 // 应改为:void calculate() {}
final int XYZ = 100;        // 应改为:final int MAX_VALUE = 100;

练习3:代码规范检查

java

public class testClass {          // ❌ 类名应为大驼峰
    private int UserAge;          // ❌ 变量名应为小驼峰
    public static final int max;  // ❌ 常量名应为全大写
    
    public void GETDATA() {       // ❌ 方法名应为小驼峰
        int temp_value = 10;      // ❌ 变量名应为小驼峰
    }
}

// 修正后:
public class TestClass {
    private int userAge;
    public static final int MAX;
    
    public void getData() {
        int tempValue = 10;
    }
}