繁星飞跃 发表于 2021-1-4 20:22

Java关键字的笔记

#### Java关键字的笔记

> 我在查询一些资料的时候,发现资料中说的关键字都不一致,而且具体的单词也都大不相同,所以我特意查阅了jdk6-15(截止到目前(2020.01.04)最新)的官方文档,对此进行了整理
>
> tips:因为Oracle是在Java6的时候收购的Sun公司,所以Oracle官网上我只找到了6-15的文档
>
> 官方文档:https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9
>
> 链接中 jls/se8/html 中的se8就是对应的jdk版本(7-15)
>
> se6要把jls/后面的删掉,翻到页面最下就有了(想看但不知道点哪个地方的话自己悟)
>
> tips*2:如果你查看过这些文档,你会发现se6的网页和其他不同(所谓的干儿子亲儿子之间的不同?)

截止到目前(2020.01.04)最新的 se15      共有51个关键字

```
abstract   continue   for          new         switch
assert   default    if         package   synchronized
boolean    do         goto         private   this
break      double   implements   protected   throw
byte       else       import       public      throws
case       enum       instanceof   return      transient
catch      extends    int          short       try
char       final      interface    static      void
class      finally    long         strictfp    volatile
const      float      native       super       while
_ (underscore)
```

从se6开始      共有50个关键字

从se9开始      新增了 ` _`(下划线) 为新的保留关键字

从se14开始      官方文档添加了对 ` _`(下划线) 是保留关键字的说明

从se6到se15      `const`和`goto`      一直是保留关键字

从se6开始      官方文档就一直说明 `true`和`false` 看起来像关键字,但从技术上来讲,它们是`Boolean`文字

从se6开始      官方文档就一直说明 `null` 看起来像关键字,但从技术上来讲,它是`null`文字

从se10开始      官方文档直接说明 `true`和`false` 不是关键字,是`Boolean`文字

从se10开始      官方文档直接说明 `null` 不是关键字,是`null`文字

从se10开始      官方文档直接说明 `var` 不是关键字,而是具有特殊含义的标识符,作为局部变量声明的类型

从se9开始      添加了十个受限制的关键字

```
open, module, requires, transitive, exports, opens, to, uses, provides, with
```

具体请看官方描述:

> A further ten character sequences are *restricted keywords*: `open`, `module`, `requires`, `transitive`, `exports`, `opens`, `to`, `uses`, `provides`, and `with`. These character sequences are tokenized as keywords solely where they appear as terminals in the *ModuleDeclaration* and *ModuleDirective* productions. They are tokenized as identifiers everywhere else, for compatibility with programs written prior to Java SE 9. There is one exception: immediately to the right of the character sequence `requires` in the *ModuleDirective* production, the character sequence `transitive` is tokenized as a keyword unless it is followed by a separator, in which case it is tokenized as an identifier.

DoTrump 发表于 2021-1-5 08:55

感谢整理。

讲真,我觉得是不是关键字没那么重要,反正不是关键字也是特殊意义字符,不能轻易当变量名用,这就够了

繁星飞跃 发表于 2021-1-5 14:15

来自天堂的问候 发表于 2021-1-5 13:58
第一次知道这么全,但是基本无用呀 因为基本都不特意记忆,分个类写下原因呗

哈哈,具体分类的话官网并没有给出,咱也不好随便分类啊,而且网上一些资料也是参差不齐,所以没有分

dipper 发表于 2021-1-4 20:47

收藏了谢谢

c1earlov8 发表于 2021-1-4 21:26


收藏了谢谢

一人之下123456 发表于 2021-1-4 21:39

感谢楼主分享,学习回顾一下。

13729181580 发表于 2021-1-4 21:44

感谢分享!

aileki 发表于 2021-1-4 22:02

感谢楼主的经验分享!谢谢!

qzhing 发表于 2021-1-4 22:10

讲真,用了三四年Java了,都不知道有这么多关键字

cherrypi 发表于 2021-1-4 22:56

感谢分享,正在学习中。

zhengke 发表于 2021-1-4 23:11

好的阿萨达

地狱火 发表于 2021-1-4 23:56

感谢分享,学习了!
页: [1] 2 3 4 5 6 7
查看完整版本: Java关键字的笔记