Java学习笔记:关键字与保留字
<p>在Java中,关键字和保留字是两类具有特殊意义的标识符,它们被语言本身占用,不能作为变量名、方法名、类名等自定义标识符使用。理解它们的区别与用途,是掌握Java语法的第一步。</p><p><strong>查看官网关键字和保留字:</strong></p>
<p>https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html</p>
<h2 id="1-关键字keyword">1. 关键字(Keyword)</h2>
<p>关键字是Java语言预定义的、具有特定语法功能的单词。它们全部为小写,编译器能够识别并赋予它们特殊含义。</p>
<h3 id="java关键字列表按功能分类">Java关键字列表(按功能分类)</h3>
<table>
<thead>
<tr>
<th>分类</th>
<th>关键字</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>数据类型</td>
<td>byte, short, int, long, float, double, char, boolean</td>
<td>基本数据类型</td>
</tr>
<tr>
<td>引用类型</td>
<td>class, interface, enum, record(Java 14+)</td>
<td>定义类、接口、枚举、记录</td>
</tr>
<tr>
<td>流程控制</td>
<td>if, else, switch, case, default, while, do, for, break, continue, return</td>
<td>条件、循环、跳转</td>
</tr>
<tr>
<td>异常处理</td>
<td>try, catch, finally, throw, throws</td>
<td>异常捕获与声明</td>
</tr>
<tr>
<td>访问控制</td>
<td>private, protected, public</td>
<td>可见性修饰符</td>
</tr>
<tr>
<td>修饰符</td>
<td>abstract, static, final, strictfp, native, synchronized, transient, volatile</td>
<td>类、方法、变量修饰</td>
</tr>
<tr>
<td>类/实例相关</td>
<td>new, this, super, instanceof</td>
<td>对象创建、引用、类型检查</td>
</tr>
<tr>
<td>包相关</td>
<td>package, import</td>
<td>包管理与导入</td>
</tr>
<tr>
<td>断言</td>
<td>assert</td>
<td>断言调试(Java 1.4+)</td>
</tr>
<tr>
<td>模块系统</td>
<td>module, requires, exports, opens, uses, provides, with(Java 9+)</td>
<td>模块化系统关键字</td>
</tr>
<tr>
<td>其他</td>
<td>void, null(字面量),true, false(布尔字面量)</td>
<td>特殊值占位</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>注意:</strong><br>
关键字一共<code>50个</code>。<code>true</code>,<code>false</code>,<code>null</code>不在其中,它们看起来像关键字,其实是字面量,表示特殊的布尔值和空值,但同样不能用作标识符。<br>
<strong>字面量(Literal)</strong> 是直接在代码中表示固定值的符号。它们是程序中直接写出的数据,不需要通过变量或计算来获取。字面量直接对应某种数据类型的值,是程序中表示数据的“字面形式”。</p>
</blockquote>
<h2 id="2-保留字reserved-word">2. 保留字(Reserved Word)</h2>
<p>保留字是指当前Java版本尚未使用,但未来版本可能用作关键字的单词。目前Java中有两个保留字:<br>
<code>goto</code>:在C/C++中用于无条件跳转,Java虽未实现,但保留以备将来使用。</p>
<p><code>const</code>:在C/C++中定义常量,Java中使用<code>final</code>代替,但<code>const</code>仍被保留。</p>
<blockquote>
<p><strong>重要:</strong> 虽然 <code>goto</code>和<code>const</code>目前没有实际语法意义,但程序员仍不能将它们用作标识符,否则编译会报错。</p>
</blockquote>
<h2 id="3-关键字的演变">3. 关键字的演变</h2>
<p>随着Java版本的演进,陆续新增了一些关键字:</p>
<table>
<thead>
<tr>
<th>版本</th>
<th>新增关键字</th>
</tr>
</thead>
<tbody>
<tr>
<td>Java 1.2</td>
<td>strictfp</td>
</tr>
<tr>
<td>Java 1.4</td>
<td>assert</td>
</tr>
<tr>
<td>Java 5</td>
<td>enum</td>
</tr>
<tr>
<td>Java 9</td>
<td>module, requires, exports, opens, uses, provides, with, transitive</td>
</tr>
<tr>
<td>Java 14</td>
<td>record(预览,Java 16正式)</td>
</tr>
<tr>
<td>Java 15</td>
<td>sealed, permits(预览,Java 17正式)</td>
</tr>
<tr>
<td>Java 17</td>
<td>sealed, permits(正式)</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>注意</strong>:<code>record</code>、<code>sealed</code>、<code>permits</code>等虽然在新版本中成为关键字,但在旧版本中可能允许用作标识符。为保持代码的向前兼容性,应避免使用这些潜在的关键字作为标识符。</p>
</blockquote>
<h2 id="4-关键字与保留字的使用规则">4. 关键字与保留字的使用规则</h2>
<ol>
<li>
<p>绝对不能用作标识符:任何关键字、保留字、true、false、null都不能作为变量名、方法名、类名、包名等。</p>
</li>
<li>
<p>严格区分大小写:所有关键字均为小写,Public或CLASS都不是关键字,但为避免混淆,不应使用此类命名。</p>
</li>
<li>
<p>标识符命名规范:虽然允许使用$和_,但官方推荐使用字母、数字、下划线的组合,且以字母开头,避免与关键字混淆。</p>
</li>
</ol>
<h2 id="5-常见误区">5. 常见误区</h2>
<ul>
<li>
<p><code>const</code>和<code>goto</code>并不是“没用”:它们是保留字,不允许使用,即使你写int const = 10;也会编译失败。</p>
</li>
<li>
<p><code>true</code>、<code>false</code>、<code>null</code>虽然可以出现在代码中,但不能被重定义,例如不能写String null = "abc";。</p>
</li>
<li>
<p>新版本关键字在旧版JDK中可能不是关键字,但为了跨版本兼容,建议始终避开这些名称。</p>
</li>
</ul><br><br>
来源:https://www.cnblogs.com/lisong0626/p/19807198
頁:
[1]