标识符和关键字

1.以下是Java关键字(含保留字及新增关键字)的用途说明,按字母顺序排列,采用两列清晰展示:

关键字 主要用途
abstract 声明抽象类(不可实例化)或抽象方法(无具体实现,子类需重写)。
assert 调试用,检查条件是否为真,不满足时抛出AssertionError(需启用-ea参数)。
boolean 声明布尔类型变量(值只能是truefalse)。
break 终止当前循环(for/while/do-while)或switch语句,跳转到后续代码。
byte 声明8位有符号整数类型变量(范围:-128 ~ 127)。
case switch语句中定义分支条件(匹配值后执行对应代码)。
catch 捕获try块中抛出的异常,定义异常处理逻辑。
char 声明16位Unicode字符类型变量(范围:\u0000 ~ \uFFFF)。
class 声明一个类(对象的模板,包含属性和方法)。
const 保留关键字(未实际使用,原计划用于常量声明)。
continue 跳过当前循环的剩余代码,直接进入下一次循环迭代。
default switch语句中定义默认分支(所有case不匹配时执行)。
do while结合,定义后测试循环(循环体至少执行一次)。
double 声明64位双精度浮点数类型变量(精度约15-17位有效数字)。
else if结合,定义条件不满足时执行的代码块。
enum 声明枚举类型(有限的命名常量集合,如Color.RED)。
exports 模块系统(Java 9+)中声明当前模块导出的包(允许其他模块访问)。
extends 声明类继承父类(单继承),或接口继承父接口(多继承)。
final 修饰类(不可被继承)、方法(不可被重写)或变量(不可修改的常量)。
finally try/catch结合,定义无论是否发生异常都执行的代码(如资源释放)。
float 声明32位单精度浮点数类型变量(精度约6-7位有效数字)。
for 定义前测试循环(初始化、条件、迭代步骤集中声明)。
goto 保留关键字(未实际使用,原计划用于无条件跳转)。
if 定义条件判断(条件为真时执行对应代码块)。
implements 声明类实现一个或多个接口(需实现接口的所有抽象方法)。
import 导入其他包/模块中的类、接口(避免全限定名调用)。
instanceof 检查对象是否是某个类、接口或其子类的实例(返回布尔值)。
int 声明32位有符号整数类型变量(范围:-2³¹ ~ 2³¹-1)。
interface 声明接口(抽象方法和常量的集合,类可实现多个接口)。
long 声明64位有符号整数类型变量(范围:-2⁶³ ~ 2⁶³-1)。
module 声明一个模块(封装类和包,定义依赖与导出,Java 9+)。
native 声明本地方法(用C/C++等语言实现,由JVM调用)。
new 创建对象实例(调用构造方法)或数组(如new int[5])。
non-sealed 声明密封类的子类可被进一步继承(解除密封,Java 17+)。
null 保留字面量(表示对象引用为空,非关键字但需注意空指针异常)。
opens 模块系统(Java 9+)中声明当前模块开放的包(允许反射访问)。
package 声明类所属的包(组织代码,避免命名冲突)。
permits 声明密封类允许的直接子类(需与sealed配合使用,Java 17+)。
private 访问修饰符,声明成员(字段/方法)仅在当前类中可访问。
protected 访问修饰符,声明成员在当前类、子类及同包类中可访问。
public 访问修饰符,声明成员在任何位置均可访问(最宽松的权限)。
provides 模块系统(Java 9+)中声明当前模块提供的服务实现(如provides Service with Impl)。
record 声明不可变数据类(自动生成equals/hashCode/toString和字段访问方法,Java 16+)。
requires 模块系统(Java 9+)中声明当前模块依赖的其他模块(如requires com.example)。
return 结束方法执行,返回结果(void方法无返回值)。
sealed 声明密封类(限制可继承的子类,需用permits指定允许的子类,Java 17+)。
short 声明16位有符号整数类型变量(范围:-32768 ~ 32767)。
static 修饰成员(字段/方法/内部类)属于类本身,而非实例(通过类名直接访问)。
strictfp 限制浮点数计算精度(确保跨平台结果一致,多用于科学计算)。
super 引用父类的实例变量、方法或构造方法(区分子类与父类同名成员)。
switch 多分支条件判断(支持基本类型、枚举、字符串及Java 12+的表达式形式)。
synchronized 声明同步方法或代码块(保证多线程访问的互斥性,避免数据竞争)。
this 引用当前对象的实例变量、方法或构造方法(区分局部变量与成员变量)。
throw 手动抛出一个异常对象(如throw new IOException())。
throws 声明方法可能抛出的异常类型(调用者需处理或继续抛出)。
transient 声明实例变量不参与序列化(反序列化时会被忽略,用于敏感数据保护)。
try 定义可能抛出异常的代码块(配合catch/finally处理异常)。
to 模块系统(Java 9+)中限制导出包的目标模块(如exports pkg to moduleA)。
uses 模块系统(Java 9+)中声明当前模块使用的服务(如uses Service)。
var 声明局部变量(类型由初始化值推断,Java 10+,简化代码)。
void 声明方法无返回值(或作为void类型的占位符)。
volatile 声明变量在多线程中可见(禁止编译器优化,保证内存可见性)。
while 定义前测试循环(条件为真时重复执行循环体)。
with 模块系统(Java 9+)中声明服务实现的关联(如provides Service with Impl)。
yield switch表达式中返回值(终止当前分支并返回结果,Java 13+)。
  • 保留字constgoto 为历史保留字(未实际使用);nulltruefalse 为字面量保留(非严格关键字)。
  • 版本新增:模块相关关键字(module/requires等)为Java 9+引入;var(Java 10)、yield(Java 13)、record(Java 16)、sealed/permits/non-sealed(Java 17)为近年主要新增特性。
    2.类名、方法名、变量名都是标识符
    3.名命规范:
    • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
    • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
    • 不能使用关键字作为变量名或方法名。(红色标注强调)
    • 标识符是大小写敏感的EX:String A 与String a里A与a是不一样的标识符
    • 合法标识符举例:age、$salary、_value、__1_value
    • 非法标识符举例:123abc、-salary、#abc