1. 単語のリスト

他のプログラミング言語と同様に、Java にも特別な意味を持つ単語があります。たとえば、returnまたはifwhileこれらの単語はキーワード (キーワード) と呼ばれ、Java 言語によって予約されているとみなされます。

これらの単語を変数名、メソッド名、またはクラス名として使用することはできません。コンパイラは常に、厳密に定義された方法でそれらを解釈します。Javaにはこんな言葉があります54

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

そのうちのいくつかはすでにご存知でしょう。残りについては今からお話します。


2. プリミティブ型

おそらく覚えていると思いますが、Java には 8 つのプリミティブ型があり、それぞれに独自のキーワードがあります。

  • byte
  • short
  • int
  • long
  • char
  • float
  • double
  • boolean
  • void

十分な探究心を持っているなら、すでに変数に int という名前を付けようとしている可能性が十分にあります。そしてもちろん成功しませんでした。これはまさに、すべてのプリミティブ型の名前が予約語であるためです。

タイプvoidもこのカテゴリに分類されます。


3. ループと分岐

ループと分岐によって、キーワードのかなり長いリストも得られます。

  • if
  • else
  • switch
  • case
  • default
  • while
  • do
  • for
  • break
  • continue

この言語では、数種類のループ、分岐、およびループ (breakcontinue) および複数の分岐 ( switch) を中断するための制御ステートメントを提供するには、わずか 10 ワードで十分です。これらのキーワードはすべてすでにご存知です。


4. 例外

例外として、次の 5 つのキーワードが得られます。

  • try
  • catch
  • finally
  • throw
  • throws

これらはすべてtry-catch-finallyブロックの一部です。例外をスローする演算子は でありthrowthrowsキーワードは例外メカニズムをサポートしますchecked

幸いなことに、あなたは例外に関連するすべてのキーワードをすでによく知っているため、例外の操作についてもほぼ慣れていることになります。


5. 可視性

ここには 3 つのキーワードしかありませんが、それらはすでによく知られています。

  • private
  • protected
  • public

publicプログラム内のどこからでもメソッド/変数/クラスにアクセスできます。

privateプログラム内のどこからでもメソッド/変数/クラスにアクセスすることを禁止します。アクセスは、修飾子でマークされたメソッドと同じクラス内でのみ許可されますprivate

protectedと同じように機能しますprivateが、継承されたクラスからメソッド/変数/クラスにアクセスすることもできます。OOP と継承に慣れると、この修飾子の利点がより明確になります。


6. クラスの操作

このカテゴリには 11 個のキーワードがあります。

  • class
  • interface
  • enum
  • import
  • package
  • extends
  • implements
  • static
  • final
  • abstract
  • default

それらは 4 つのグループに分類できます。

最初のグループは、クラス、およびclassの作成に関連しています。クラスと列挙型の宣言についてはすでに学習しました。このキーワードは、さらに別のクラスのような型であるインターフェイスを宣言するために使用されます。interfaceenuminterface

2 番目のグループは、すでにおなじみのpackage キーワードと importキーワードで構成されます。package キーワードは、クラス ファイル内のクラスのパッケージを指定するために使用されます。これimportは、独自のクラスを作成するときに外部クラスの短縮名を使用できるようにするためです。

およびキーワードextendsimplements継承に使用されます。これらについては、Java Core クエストの最初の部分で確認します。

最後に、最後のグループはstatic、、、、および修飾子で構成されます。と についてはすでに少しはご存知でしょう。キーワードは、クラスまたはメソッドを抽象化するために使用されます。Java Core クエストで継承について学ぶと、より詳細な情報が得られます。finaldefaultabstractstaticfinalabstract


7. オブジェクトと変数の操作

オブジェクト、メソッド、変数を操作する場合、さらに 6 つのキーワードが使用されます。

  • new
  • instanceof
  • this
  • super
  • return
  • var(Java 10以降)

演算子newは新しいオブジェクトを作成するために使用されます。それはすでにご存知でしょう。

演算子instanceofは、変数に特定の型のオブジェクトへの参照が含まれていることを確認するために使用されます。あなたはすでにそれをよく知っています。

このthisキーワードは、インスタンス変数とメソッドのシャドウイングによって発生する問題を解決するために使用されます。あなたもこれを勉強しましたね。

キーワードsuperは に似ていますthisが、親クラスのメソッドと変数を参照するために使用されます。親クラスはスーパークラスとも呼ばれます。

このreturnステートメントは、メソッドの値を返したり、メソッドの実行を終了したりするために使用されます。

最後に、var型が自動的に推測される変数を宣言します。これについてはすでにご存知でしょう。


8. マルチスレッド化

Java 構文のレベルでは、マルチスレッドはわずか 2 つの単語で表されます。

  • synchronized
  • volatile

私たちはそれらに触れることさえしません。Java マルチスレッドのクエストに進んでから、さらに詳しく見ていきましょう。


9. その他

他に 4 つの特別なキーワードがあります。

  • native
  • transient
  • assert
  • strictfp

nativeメソッド宣言の前に記述できる修飾子です。これは、メソッド コードが Java ではなく C++ で記述され、Java マシン (つまり DLL) に埋め込まれていることを意味します。おそらくすでにご想像のとおり、Java マシン自体も C++ で書かれています。多くの標準ライブラリ メソッドと同様です。

transientインスタンス変数(クラスのフィールド)の前に記述できる修飾子です。これは、クラスのオブジェクトをシリアル化するときに、マークされた変数をスキップ (または無視) するように Java マシンに要求します。シリアル化について詳しくは、Java Collections クエストをご覧ください。

assertも C++ から Java に来ています。これを利用すると、コードに追加のチェックを追加できます (変数が null かどうかをチェックするなど)。ここで重要なことは、これらのチェックがコンパイル時に有効または無効になることです。

内部テスト用にプロジェクトをビルドできます。これらのチェックは (ビルドに含まれて) 実行されます。または、コンパイル中にそれらを無効にして、ユーザーに提供されるプログラムのバージョンを作成することもできます。

strictfpキーワードとインテル プロセッサーの優れた精度については、すべてをご紹介します。


10. 予約されているが使用されていない

予約されているものの使用されていない 2 つのキーワードもあります。

  • const
  • goto

これらは C++ 言語の遺産でもあり、存在し、使用されています。


11. キーワードではない

正式には、、trueおよびfalse定数nullはキーワードではありません。とは言え、それぞれに特徴があります。メソッドtrueや変数に名前を付けることはできませんfalse。コンパイラはそのようなコードを理解できないため、コンパイルしません。