一、概述
- Java 中有 50 个关键字,由 ASCII 字母组成,不可用作标识符。
- 其中
const和goto为保留字,虽未实际使用但被预留。 - 有 3 个特殊值:
true、false(布尔字面量)、null(空字面量),它们看似关键字,实则为特殊值。
二、基本数据类型相关关键字(8 个)
用于定义不同存储范围和特性的基本数据类型。
-
byte:单字节类型
- 1 个字节(8 位),数据范围:
[-128, 127] - 注意:
byte与byte做算术运算,结果会升级为int。
- 1 个字节(8 位),数据范围:
-
short:短整型
- 2 个字节(16 位),数据范围:
[-32768, 32767] - 注意:
short与short做算术运算,结果会升级为int。
- 2 个字节(16 位),数据范围:
-
int:整型
- 4 个字节(32 位),数据范围:
[-2^31, 2^31 - 1]。
- 4 个字节(32 位),数据范围:
-
long:长整型
- 8 个字节(64 位),数据范围:
[-2^63, 2^63 - 1] - 注意:
long类型的数字后面需要加L或小写l。
- 8 个字节(64 位),数据范围:
-
char:单字符类型
- 2 个字节(16 位),无符号整数范围:
[0, 65535],使用 Unicode 字符集 - 标准 ASCII 字符集范围
[0, 127],其中数字字符['0','9']的编码值是[48,57],大写字母['A','Z']编码值[65,90],小写字母['a','z']编码值[97,122] - 字符常量表示方式:直接字符(如
'a'、'尚')、转义字符(如b退格、t水平制表、n换行等)、Unicode 编码十六进制形式(如'u5c1a'表示'尚') - 注意:
char与char做算术运算,结果为int类型。
- 2 个字节(16 位),无符号整数范围:
-
float:单精度浮点型
- 4 个字节,最大精度范围:科学记数法表示数字后的小数点后 6~7 位
- 注意:
float类型的数字后面需要加F或f。
-
double:双精度浮点型
- 8 个字节,最大精度范围:科学记数法表示数字后的小数点后 15~16 位。
-
boolean:布尔类型
- 只能有两个值:
true和false。
- 只能有两个值:
三、声明引用数据类型相关(3 个)
用于定义类、接口、枚举等引用数据类型。
-
class:声明类
-
语法格式:
【修饰符】 class 类名{ } 【修饰符】 class 类名 【extends 父类】 【implements 父接口们】{ } -
类中可包含 5 个成分:成员变量(属性)、成员方法、构造器、代码块、成员内部类。
-
-
interface:声明接口
-
语法格式:
【修饰符】 interface 接口名{ ... } 【修饰符】 interface 接口名 【extends 父接口们】{ } -
特点:
- JDK1.8 之前,只能有全局静态常量(
public static final)和公共抽象方法(public abstract);JDK1.8 之后,可包含公共静态方法(public static)和公共默认方法(public default) - 无构造器、代码块,但可声明成员内部类、成员内部接口
- 不能直接实例化,但接口类型的变量可与实现类的对象构成多态引用
- 可继承多个父接口,Java 类可同时实现多个父接口(非抽象实现类必须实现所有抽象方法)。
- JDK1.8 之前,只能有全局静态常量(
-
-
enum:声明枚举
-
语法格式:
【修饰符】 enum 枚举类型名{ } 【修饰符】 enum 枚举类型名 【implements 父接口们】{ ... } -
特点:
- 枚举类型有已知的几个常量对象,必须在枚举类型的首行声明
- 不能显式声明父类,默认继承
java.lang.Enum类型。
-
四、特殊空类型(1 个)
- void:无返回值类型
-
语法格式:
// 抽象方法 【修饰符】 void 方法名(【形参列表】)【throws 异常列表】; // 非抽象方法 【修饰符】 void 方法名(【形参列表】)【throws 异常列表】{ } -
注意:返回值类型是
void的方法中,可使用return;提前结束方法运行。
-
五、流程控制语句相关(10 个)
用于控制程序执行流程。
-
if/else:条件判断分支结构
-
语法格式:
// 单分支 if(条件表达式){ 语句块; } // 双分支 if(条件表达式){ 语句块1; }else{ 语句块2; } // 多分支 if(条件表达式1){ 语句块1; }else if(条件表达式2){ 语句块2; }else{ 语句块n+1; }
-
-
switch/case:选择结构
-
语法格式:
switch(表达式){ case 常量值1: 语句块1; 【break;】 case 常量值2: 语句块2; 【break;】 【default: 语句块n+1; 【break;】】 } -
执行过程:匹配
case常量值进入入口,顺序执行至break或结构结束 -
注意:
- 表达式类型:
byte、short、int、char、String(JDK1.7+)、枚举(JDK1.5+) case后必须是常量值,且不可重复。
- 表达式类型:
-
-
for:循环
-
普通 for 循环:
for(【初始化表达式】; 【循环条件】; 【迭代表达式】){ 循环体语句块; }执行过程:初始化→判断循环条件→成立则执行循环体→迭代表达式→重复判断
-
增强 for 循环(foreach):
for(元素数据类型 元素名 : 数组或集合等容器名){ 循环体语句块; }用于遍历实现
java.lang.Iterable接口的容器(如数组、集合),调用迭代器的hasNext()和next()方法 -
注意:
for(;;)为死循环(无break时)。
-
-
while:循环
-
语法格式:
while(循环条件){ 循环体语句块; } -
执行过程:先判断循环条件,成立则执行循环体,重复判断。
-
-
do:与
while结合构成do...while循环-
语法格式:
do{ 循环体语句块; }while(循环条件); -
特点:至少执行一次循环体,
while后分号不可省略。
-
-
break:结束结构
- 用法:结束当前
switch结构;结束当前(层)循环,结合标签可结束指定循环。
- 用法:结束当前
-
continue:跳过本次循环
- 用法:仅用于循环,提前结束本次循环,跳过剩余循环体语句,结合标签可作用于指定循环。
-
return:结束方法
- 形式:
return;:用于返回值为void的方法,提前结束return 返回值;:用于返回值非void的方法,提前结束并返回结果(必选)。
- 形式:
六、default(1 个)
- default:默认的
- 用法:
switch...case结构中,表示默认分支- JDK1.8 之后接口中用于声明默认方法
- 注解中用于声明某个配置参数的默认值。
- 用法:
七、关系相关(5 个)
-
extends:继承关系
- 用于类继承父类、接口继承父接口
- 语法:
【修饰符】 class 子类 extends 父类{ }、【修饰符】 interface 子接口 extends 父接口们{ }。
-
implements:实现关系
- 用于类实现接口
- 语法:
【修饰符】 class 子类 【extends 父类】 implements 接口们{ }。
-
instanceof:所属关系判断
- 语法:
if(对象 instanceof 类型名){ },判断对象是否属于指定类型,常用于向下转型前避免ClassCastException异常。
- 语法:
-
this:引用当前对象
- 用法:
this.属性/this.成员变量:区分局部变量与成员变量this.成员方法():调用当前对象的其他成员方法this()/this(实参列表):在构造器首行调用本类其他构造器。
- 用法:
-
super:引用父类
- 用法:
super.属性:访问父类被隐藏的属性super.方法:调用父类被重写的方法super()/super(实参列表):在子类构造器首行调用父类构造器(super()可省略,super(实参列表)不可省略)。
- 用法:
八、创建对象(1 个)
- new:创建
- 用于创建数组对象、类的对象,创建的对象存储在堆中。
九、包相关(2 个)
-
package:声明包
- 作用:避免类的重名、控制某些类 / 成员的可见范围、分包组织管理类
- 语法格式:
package 包名;(必须在.java 源文件首行) - 命名规范:所有单词小写,用
.分割,习惯用公司域名倒置 + 模块名。
-
import:导包
-
用于使用其他包的类,语法:
import 包.类名; import 包.*; import static 包.类名.静态成员名; import static 包.类名.*; -
注意:使用两个不同包的同名类时,一个用全名称,一个用导包。
-
十、修饰符
1. 权限修饰符(3 个)
| 修饰符 | 本类(任意位置) | 本包其他类 | 其他包的子类 | 其他包非子类 | 可修饰成分 |
|---|---|---|---|---|---|
| private | √ | × | × | × | 属性、方法、构造器、成员内部类 |
| 缺省 | √ | √ | × | × | 属性、方法、构造器、成员内部类、外部类 |
| protected | √ | √ | √ | × | 属性、方法、构造器、成员内部类 |
| public | √ | √ | √ | √ | 属性、方法、构造器、成员内部类、外部类 |
2. 其他修饰符(8 个)
-
static:静态的
- 可修饰:成员变量(类变量,所有对象共享,存储在方法区)、成员方法(类方法,不可重写,用类名调用)、代码块(静态代码块,类初始化时执行一次)、成员内部类(静态内部类,可包含静态成员)
- 注意:静态方法中不能出现
this、super,不能直接使用非静态成分。
-
native:原生的
- 仅修饰方法,表示方法体非 Java 语言实现,可像普通 Java 方法一样调用和重写。
-
final:最终的
- 可修饰:
- 类(包括外部类、内部类):不能被继承
- 方法:不能被子类重写,可继承
- 变量(成员变量和局部变量):值不可修改(常量),建议常量名大写,单词间用
_分割(如XXX_YYY_ZZZ)。
- 可修饰:
-
abstract:抽象的
- 可修饰类、方法:
- 抽象方法:无方法体,包含抽象方法的类必须是抽象类
- 抽象类:不能直接实例化,子类需实现所有抽象方法(否则子类也为抽象类),可包含类的 5 大成员。
- 可修饰类、方法:
-
synchronized:同步的
- 可修饰方法(同步方法)和同步代码块:
- 同步方法的锁对象:静态方法为
当前类.class,非静态方法为this - 同步代码块:
synchronized(锁对象){ }。
- 同步方法的锁对象:静态方法为
- 可修饰方法(同步方法)和同步代码块:
-
volatile:易变的
- 修饰成员变量,表示变量值易变,多线程中每次读取需从主存获取最新值(不缓存)。
-
strictfp:严格遵循 FP 模式
- 修饰类、接口、方法,确保浮点运算遵循 IEEE-754 规范,不同硬件平台结果一致。
-
transient:瞬时的
- 修饰成员变量,实现
java.io.Serializable接口的类中,该变量不参与序列化。
- 修饰成员变量,实现
十一、异常处理相关(5 个)
-
try:尝试执行
- 尝试执行代码,若发生异常则抛出异常对象,由
catch捕获。
- 尝试执行代码,若发生异常则抛出异常对象,由
-
catch:捕获异常
- 尝试捕获
try中抛出的异常对象,类型匹配则处理,否则结束当前方法。
- 尝试捕获
-
finally:最终块
- 无论
try中是否抛出异常、catch是否捕获、是否有return,都会执行。
- 无论
-
throw:抛出
- 手动抛出异常,语法:
throw 异常对象;,未被捕获则结束当前方法并将异常带回调用处,用户自定义异常需手动抛出。
- 手动抛出异常,语法:
-
throws:声明抛出异常
- 在方法签名中声明抛出的异常类型,语法:
【修饰符】 返回值类型 方法名(【形参列表】) throws 异常类型列表{ },表示异常由调用者处理。
- 在方法签名中声明抛出的异常类型,语法:
十二、assert(1 个)
- assert:断言
- 语法:
assert 布尔表达式;或assert 布尔表达式 : "错误信息"; - 若表达式为
false,抛出java.lang.AssertionError,需通过 JVM 参数-ea开启断言功能。

- 语法:
十三、保留字(2 个)
- const:在 C 语言等中用于声明常量,Java 中未使用但保留。
- goto:在 C 语言等中用于跳转到指定位置,Java 中未使用但保留。
十四、特殊值(3 个)
- true:布尔值 “真”
- false:布尔值 “假”
- null:空值,调用属性或方法会报空指针异常
- 三者看似关键字,实则为特殊值。


