## 十二、 48 个关键字

“二哥，就我之前学过的这些 Java 代码中，有 public、static、void、main 等等，它们应该都是关键字吧？”三妹的脸上泛着甜甜的笑容，我想她在学习 Java 方面已经变得越来越自信了。

“是的，三妹。Java 中的关键字可不少呢！你一下子可能记不了那么多，不过，先保留个印象吧，对以后的学习会很有帮助。”

PS：按照首字母的自然顺序排列。

1.  **abstract：** 用于声明抽象类，以及抽象方法。

2.  **boolean：** 用于将变量声明为布尔值类型，只有 true 和 false 两个值。

3.  **break：** 用于中断循环或 switch 语句。

4.  **byte：** 用于声明一个可以容纳 8 个比特的变量。

5.  **case：** 用于在 switch 语句中标记条件的值。

6.  **catch：** 用于捕获 try 语句中的异常。

7.  **char：** 用于声明一个可以容纳无符号 16 位比特的 [Unicode 字符](https://mp.weixin.qq.com/s/pNQjlXOivIgO3pbYc0GnpA)的变量。

8.  **class：** 用于声明一个类。

9.  **continue：** 用于继续下一个循环，可以在指定条件下跳过其余代码。

10.  **default：** 用于指定 switch 语句中除去 case 条件之外的默认代码块。

11.  **do：** 通常和 while 关键字配合使用，do 后紧跟循环体。

12.  **double：** 用于声明一个可以容纳 64 位浮点数的变量。

13.  **else：** 用于指示 if 语句中的备用分支。

14.  **enum：** 用于定义一组固定的常量（枚举）。

15.  **extends：** 用于指示一个类是从另一个类或接口继承的。

16.  **final：** 用于指示该变量是不可更改的。

17.  **finally：** 和 `try-catch` 配合使用，表示无论是否处理异常，总是执行 finally 块中的代码。

18.  **float：** 用于声明一个可以容纳 32 位浮点数的变量。

19.  **for：** 用于声明一个 for 循环，如果循环次数是固定的，建议使用 for 循环。

20.  **if：** 用于指定条件，如果条件为真，则执行对应代码。

21.  **implements：** 用于实现接口。

22.  **import：** 用于导入对应的类或者接口。

23.  **instanceof：** 用于判断对象是否属于某个类型（class）。

24.  **int：** 用于声明一个可以容纳 32 位带符号的整数变量。

25.  **interface：** 用于声明接口。

26.  **long：** 用于声明一个可以容纳 64 位整数的变量。

27.  **native：** 用于指定一个方法是通过调用本机接口（非 Java）实现的。

28.  **new：** 用于创建一个新的对象。

29.  **null：** 如果一个变量是空的（什么引用也没有指向），就可以将它赋值为 null，和空指针异常息息相关。

30.  **package：** 用于声明类所在的包。

31.  **private：** 一个访问权限修饰符，表示方法或变量只对当前类可见。

32.  **protected：** 一个访问权限修饰符，表示方法或变量对同一包内的类和所有子类可见。

33.  **public：** 一个访问权限修饰符，除了可以声明方法和变量（所有类可见），还可以声明类。`main()` 方法必须声明为 public。

34.  **return：** 用于在代码执行完成后返回（一个值）。

35.  **short：** 用于声明一个可以容纳 16 位整数的变量。

36.  **static：** 表示该变量或方法是静态变量或静态方法。

37.  **strictfp：** 并不常见，通常用于修饰一个方法，确保方法体内的浮点数运算在每个平台上执行的结果相同。

38.  **super：** 可用于调用父类的方法或者字段。

39.  **switch：** 通常用于三个（以上）的条件判断。

40.  **synchronized：** 用于指定多线程代码中的同步方法、变量或者代码块。

41.  **this：** 可用于在方法或构造函数中引用当前对象。

42.  **throw：** 主动抛出异常。

43.  **throws：** 用于声明异常。

44.  **transient：**  修饰的字段不会被序列化。

45.  **try：** 于包裹要捕获异常的代码块。

46.  **void：** 用于指定方法没有返回值。

47.  **volatile：** 保证不同线程对它修饰的变量进行操作时的可见性，即一个线程修改了某个变量的值，新值对其他线程来说是立即可见的。

48.  **while：** 如果循环次数不固定，建议使用 while 循环。


“好了，三妹，关于 Java 中的关键字就先说这 48 个吧，这只是一个大概的介绍，后面还会对一些特殊的关键字单独拎出来详细地讲，比如说重要的 static、final 等。”转动了一下僵硬的脖子后，我对三妹说。

“二哥，你辛苦了，足足 48 个啊，容我好好消化一下。”