唉,我自认为java关键字我已经记得差不多了,没想到今天还是失手了,问大家一个问题,你们觉得 true、false、null 是关键字吗,说实话我觉得这三个都是关键字,然后就。。。是的,你没猜错,答案是它们不是关键字。为什么呢,且听我细细道来。
首先我们看一下官方给的文档吧
很明显这里的关键字只有50个,并且是没有 true、false以及null的,但是呢细心的朋友可能发现这些关键字的上面还有一段话
Here is a list of keywords in the Java programming language. You cannot use any of the following as identifiers in your programs. The keywords const and goto are reserved, even though they are not currently used. true , false , and null might seem like keywords, but they are actually literals; you cannot use them as identifiers in your programs. |
翻译过来就是:下面是Java编程语言中的关键字列表。您不能在程序中使用以下任何一项作为标识符。关键字const和goto是保留的,即使它们当前未被使用。true、false和null看起来像关键字,但实际上是文本;不能在程序中将它们用作标识符。
所以啊,true、false、null并不是关键字,但在代码中也确实不能当做变量名,会报错的。
下面再简短的介绍一下那50个关键字吧。
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
class | 类 | |
extends | 扩充,继承 | |
final | 最终值,不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地,原生方法(非 Java 实现) | |
new | 新,创建 | |
static | 静态 | |
strictfp | 严格,精准 | |
synchronized | 线程,同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制语句 | break | 跳出循环 |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
while | 循环 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | import | 引入 |
package | 包 | |
基本类型 | boolean | 布尔型 |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
enum | 枚举 | |
变量引用 | super | 父类,超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 |