Java 关键字与保留字详解

Java 关键字与保留字字典:逐个给出语义、版本约束与示例。Java 语言关键字共 50 个(含两个保留字 const/goto 与三个上下文敏感的 true/false/null 字面量)。

1. abstract – 抽象

描述

类或方法只有声明没有实现;抽象类不能实例化,必须由子类实现全部抽象方法。

语法和示例

abstract class Shape {
    abstract double area();          // 无方法体
    void print() {                   // 抽象类可含具体方法
        System.out.printf("%.2f%n", area());
    }
}
class Circle extends Shape {
    double r;
    Circle(double r) { this.r = r; }
    double area() { return Math.PI * r * r; }
}

2. assert – 断言

描述

运行时校验不变量;默认禁用,-ea 开启。生产不要用它做业务校验。

语法和示例

int divide(int a, int b) {
    assert b != 0 : "除数不能为 0";   // -ea 时生效
    return a / b;
}

3. boolean / byte / short / int / long / float / double / char – 基本类型

描述

8 种基本类型是值语义、非对象;byte 8 位到 double 64 位;char 是 16 位 UTF-16 单元。

语法和示例

int i = 42;
long l = 9_000_000_000L;      // 下划线分位(7+)
double d = 3.14;
float f = 2.5f;               // 必须 f 后缀
char c = '中';                 // 单引号,可存中文
byte b = (byte) 200;          // 溢出需显式转换 → -56

4. break / continue – 跳出与继续

描述

break 终止最近一层循环/switch;带标签跳出外层;continue 进入下一轮。

语法和示例

outer:
for (int[] row : grid) {
    for (int v : row) {
        if (v < 0) break outer;      // 直接跳出双重循环
        if (v == 0) continue;         // 跳过本轮
        sum += v;
    }
}

5. byte/short/int/long 与整型溢出

描述

int 上限 2147483647;溢出不报错而是回绕——大数用 long 或 BigInteger。

语法和示例

int max = Integer.MAX_VALUE;
System.out.println(max + 1);   // -2147483648(回绕)
long big = 9_000_000_000L;     // 超 int 范围必须 long
Math.addExact(max, 1);         // 抛 ArithmeticException(需要检测时)

6. case / default / switch – 分支

描述

传统 switch 有 fall-through(忘 break 是经典 bug);14+ 箭头语法无 fall-through。

语法和示例

// 传统(注意 break)
switch (day) {
    case MON: case TUE:
        System.out.println("工作日"); break;   // 漏 break 会贯穿
    default: break;
}
// 表达式(14+,推荐)
String type = switch (day) {
    case SAT, SUN -&gt; "周末";
    default -&gt; "工作日";
};

7. catch / finally / try – 异常处理

描述

catch 按类型捕获(子类在前);finally 无论是否异常都执行(return 也拦不住);try-with-resources 自动关闭。

语法和示例

try (var in = new BufferedReader(new FileReader("a"))) {
    process(in);
} catch (FileNotFoundException e) {          // 先具体
    log(e);
} catch (IOException e) {                    // 后宽泛
    throw new UncheckedIOException(e);
} finally {
    // 清理(try-with-resources 已覆盖大多数场景,少用)
}

8. class / interface / enum / record – 类型声明

描述

class 可实例化模板;interface 是能力契约(default 方法可有实现);enum 实例固定的类;record 不可变数据载体(16+)。

语法和示例

interface Fly { default void fly() { System.out.println("飞"); } }
enum Level { LOW, MID, HIGH }
record Point(int x, int y) {}
class Bird implements Fly {}
// enum 可带构造与方法:
enum Planet {
    MARS(6.4e23), EARTH(5.97e24);
    final double mass;
    Planet(double m) { mass = m; }
}

9. const / goto – 保留字

描述

从未使用的保留字(C++ 移植兼容而设);写出来是编译错误。

语法和示例

// const int x = 1;    // 编译错误:不是关键字也不可用
// goto label;         // 同上

10. extends / implements – 继承与实现

描述

单继承类(extends),多实现接口(implements);构造器不被继承,子类必须链式调 super。

语法和示例

class Base { Base(int x) {} }
class Sub extends Base {
    Sub() { super(42); }            // 不写则隐式 super() —— 父类无参构造不存在时编译错
}
interface A {} interface B {}
class C implements A, B {}           // 接口可多实现

11. final – 终态

描述

修饰变量=不可重赋值、方法=不可覆盖、类=不可继承;不是「不可变对象」。

语法和示例

final int X = 1;              // 引用不可变
final List&lt;String&gt; list = new ArrayList&lt;&gt;();
list.add("a");                 // 合法!final 管引用不管内容
final class Util {}            // 不可继承
// String/StringBuilder 场景:字符串拼接见 StringBuilder 条目

12. finally 语义细节

描述

finally 在 return 之前执行;finally 里 return 会吞掉异常/返回值——禁止这么写。

语法和示例

int f() {
    try { return 1; }
    finally { System.out.println("先打印这个"); }   // return 前执行
}
int bad() {
    try { return 1; }
    finally { return 2; }        // 反例:吞返回值,IDE 都会警告
}

13. float / double 精度

描述

二进制浮点无法精确表示 0.1;算钱用 BigDecimal(字符串构造)。

语法和示例

System.out.println(0.1 + 0.2);            // 0.30000000000000004
var price = new BigDecimal("19.99");       // 永远字符串构造
price.add(new BigDecimal("0.01"))
     .setScale(2, RoundingMode.HALF_UP);

14. for / while / do – 循环

描述

三种循环 + 增强 for(迭代器语法糖);集合遍历优先增强 for 或 stream。

语法和示例

for (int i = 0; i &lt; 10; i++) {}
for (String s : list) {}          // 增强 for(数组/Iterable)
while (it.hasNext()) {}
do { } while (cond);              // 至少执行一次
// 迭代中删除必须用 Iterator.remove 或 removeIf
list.removeIf(x -&gt; x.isEmpty());

15. if / else – 条件

描述

标准条件;三元运算符 ? : 是表达式版。

语法和示例

int max = a &gt; b ? a : b;        // 三元
if (x instanceof String s &amp;&amp; s.length() &gt; 3) {   // 16+ 模式匹配
    use(s);                       // s 已自动解包
}

16. import / package – 包与导入

描述

package 声明文件归属;import 静态导入常量/方法;* 导入不递归子包。

语法和示例

package com.example.app;
import java.util.List;
import java.util.*;                  // 本包所有类(不含子包)
import static java.lang.Math.max;    // 静态导入
int m = max(1, 2);

17. instanceof – 类型判断

描述

16+ 支持模式匹配,判断+绑定一步完成。

语法和示例

if (obj instanceof String s) { use(s); }
if (obj instanceof Integer i &amp;&amp; i &gt; 0) {}
// 老写法:if (obj instanceof String) { String s = (String) obj; }

18. native – 本地方法

描述

声明由 JNI/panama 调用的本地实现;业务代码几乎不用。

语法和示例

native void fastCopy(byte[] src, byte[] dst);
// System.loadLibrary("mylib") 加载实现

19. new – 实例化

描述

创建对象(数组也用它);record 的 new 自动生成访问器。

语法和示例

var p = new Point(1, 2);
int[] arr = new int[10];
String[] names = {"a", "b"};        // 数组字面量

20. private / protected / public – 访问控制

描述

四级:private(本类)< 默认(同包)< protected(子类+同包)< public。

语法和示例

class A {
    private int secret;        // 仅本类
    int packageOnly;           // 默认:同包可见
    protected int forSub;      // 子类与同包
    public int open;           // 全部
}

21. return – 返回

描述

void 方法可裸 return 提前退出;构造器没有返回值声明。

语法和示例

void check(int x) {
    if (x &lt; 0) return;         // 提前退出
    process(x);
}

22. static – 静态

描述

属于类不属于实例;静态方法不能访问实例字段;static 嵌套类无外部实例引用。

语法和示例

class Counter {
    static int total;                 // 全实例共享
    static int next() { return ++total; }   // 不能碰非静态字段
    static class Helper {}            // 静态嵌套类(vs 内部类持外部引用)
}

23. strictfp – 严格浮点

描述

约束浮点跨平台一致;现代 CPU 与 17+ 后基本无感,历史兼容保留。

语法和示例

strictfp double calc() { return 0.1 + 0.2; }

24. super – 父类引用

描述

调父类构造/方法/字段;匿名内部类里 Outer.super.method() 消歧。

语法和示例

class Sub extends Base {
    Sub() { super(); }
    @Override void run() {
        super.run();               // 先跑父类逻辑
        extra();
    }
}

25. synchronized – 同步

描述

方法或代码块互斥(锁对象);简单但粗粒度——高并发用 JUC。

语法和示例

class Safe {
    private int n;
    synchronized void inc() { n++; }              // 锁 this
    void inc2() { synchronized(this) { n++; } }   // 等价写法
    // 静态方法锁 Class 对象(与实例锁互不阻塞)
}

26. this – 当前实例

描述

区分字段与参数、构造器链式调用 this(…)、内部类访问外部 this。

语法和示例

class A {
    int x;
    A(int x) { this.x = x; }
    A() { this(0); }                 // 构造器互调必须第一行
    class Inner { void f() { A.this.g(); } }   // 内部类引用外部
}

27. throw / throws – 抛出与声明

描述

throw 实际抛出;throws 声明受检异常;链式用 initCause 或构造器。

语法和示例

IOException read(String p) throws IOException {   // 受检必须声明
    if (p == null) throw new IllegalArgumentException("路径空");
    throw new UncheckedIOException("读失败", cause);
}

28. transient – 不序列化

描述

字段跳过默认序列化;需自定义 writeObject 时配合。

语法和示例

class Session implements Serializable {
    transient Socket conn;     // 不参与序列化
    String userId;
}

29. try-with-resources(语句而非关键字,但必备)

描述

AutoCloseable 声明即关;多个资源反序关闭;suppressed 异常可取。

语法和示例

try (var in = open(); var out = create()) {
    in.transferTo(out);
}   // 自动 in.close() 后 out.close(),异常互不覆盖

30. volatile – 可见性

描述

写立即刷主存、读走主存,禁止指令重排;不保证原子性(count++ 依然丢)。

语法和示例

class Flag {
    private volatile boolean running = true;   // 一线程改,多线程立即可见
    // AtomicInteger 才是原子计数;volatile 只管可见性
}

31. while 条件陷阱

描述

do-while 至少一次;赋值=在条件里是合法但危险的表达式。

语法和示例

int v;
do { v = next(); } while (v &lt; 0);    // 至少调一次
// while ((line = reader.readLine()) != null) 老惯用法,可读性差

32. true / false / null – 字面量

描述

技术上不是关键字而是字面量保留;null 可强转任意引用类型。

语法和示例

String s = null;
Object o = (String) null;      // 合法但无意义
Boolean boxed = null;          // 拆箱时 NPE 高发
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇