「Javaの勉強を始めたけど、よく見る英単語の意味がわからない…」
「publicやstaticって、おまじないのように書いているだけ…」
「変数に名前を付けようとしたら、なぜかエラーが出てしまう…」
Javaの「予約語」というルールを一度理解してしまえば、エラーは格段に減り、コードを読むスピードも書くスピードも飛躍的に向上します。
この記事では、Javaを学び始めたあなたが「予約語とは何か」を根本から理解し、自信を持ってコーディングできるようになることを目指します。
Javaの予約語とは?

Javaの予約語とは、Javaの文法の中で特別な意味を持つ、あらかじめ予約された単語のことです。これらはプログラムの骨格を作るために用意されており、私たちはそのルールに従ってコードを記述する必要があります。
予約語の基本的な意味と役割
予約語は、例えるなら日本語の「てにをは」のような助詞や、文章の構造を示す句読点のような役割を担います。「もし~ならば」を意味するif、「~の間ずっと」を意味するwhileなど、それぞれの予約語が特定の機能を持っています。
Javaコンパイラ(プログラムを機械がわかる言葉に翻訳する機械)は、これらの予約語を目印にして文の構造を理解し、プログラムの動作を決定します。つまり、予約語はプログラマーとコンパイラの間の「共通言語」なのです。
なぜ予約語を知っておく必要があるのか
予約語を知っておく理由は、主に2つあります。
Javaに存在する全ての予約語一覧

Javaには約50個の予約語が存在します。全てを一度に暗記する必要はありませんが、どのような種類があるのかをカテゴリ別に把握しておくと学習がスムーズに進みます。
制御構文に関する予約語(if, for, while など)
プログラムの流れをコントロールするための予約語です。条件分岐や繰り返し処理など、プログラミングの基本的なロジックを組み立てる際に使用します。
| 予約語 | 意味 |
if | もし~ならば(条件分岐) |
else | そうでなければ(条件分岐) |
for | 指定回数の繰り返し |
while | 条件が成り立つ間の繰り返し |
do | whileとセットで使い、最低1回は実行する繰り返し |
switch | 値に応じて処理を分岐させる |
case | switch文で使う分岐先のラベル |
default | switch文で、どのcaseにも一致しない場合の処理 |
break | 繰り返し処理やswitch文を中断する |
continue | 繰り返し処理をスキップして次の繰り返しへ進む |
return | メソッドの処理を終了し、値を返す |
データ型に関する予約語(int, double, boolean など)
変数や定数がどのような種類のデータ(数値、文字、真偽値など)を扱うのかを定義するための予約語です。
| 予約語 | 意味 |
byte | 8ビットの整数 |
short | 16ビットの整数 |
int | 32ビットの整数 |
long | 64ビットの整数 |
float | 32ビットの浮動小数点数 |
double | 64ビットの浮動小数点数 |
char | 16ビットのUnicode文字 |
boolean | trueかfalseの真偽値 |
void | メソッドが値を返さないことを示す |
クラス・オブジェクト関連の予約語(class, interface, this など)
Javaの根幹であるオブジェクト指向プログラミングを実現するための予約語です。設計図となるクラスや、その実体であるオブジェクトを扱う際に使用します。
| 予約語 | 意味 |
class | クラス(設計図)を定義する |
interface | インターフェース(メソッドの仕様だけを定義)を定義する |
enum | 列挙型を定義する |
extends | クラスを継承(機能を引継ぎ)する |
implements | インターフェースを実装(機能の詳細を定義)する |
new | オブジェクトを生成する |
this | 自分自身のオブジェクトを指す |
super | 親クラスのオブジェクトを指す |
instanceof | オブジェクトが特定のクラスのものか判定する |
package | クラスをまとめるフォルダのようなものを定義する |
import | 他のパッケージのクラスを利用可能にする |
アクセス修飾子とその他の修飾子(public, static, final など)
クラス、メソッド、変数などのアクセス範囲を制限したり、特別な性質を与えたりするための予約語です。
| 予約語 | 意味 |
public | どこからでもアクセス可能 |
protected | 同じパッケージとサブクラスからアクセス可能 |
private | 同じクラス内からのみアクセス可能 |
static | クラスに属し、オブジェクトを生成しなくても使える |
final | 変更不可能にする(定数など) |
abstract | 抽象クラスや抽象メソッドを定義する |
native | Java以外の言語で実装されたメソッドを示す |
strictfp | 浮動小数点計算の精度を厳密にする |
transient | シリアライズ(オブジェクトの保存)対象外にする |
volatile | 複数スレッド間で変数の値が常に最新に保たれるようにする |
例外処理やマルチスレッド関連の予約語(try, catch, synchronized など)
プログラムの実行中に発生するエラー(例外)を処理したり、複数の処理を同時に実行(マルチスレッド)したりするための予約語です。
| 予約語 | 意味 |
try | 例外が発生する可能性のある処理を囲む |
catch | 発生した例外を捕まえて処理する |
finally | 例外の有無にかかわらず必ず実行する処理 |
throw | 意図的に例外を発生させる |
throws | メソッドが例外を発生させる可能性があることを示す |
assert | プログラムの前提条件をチェックする |
synchronized | 複数のスレッドが同時にアクセスしないように制御する |
その他、constとgotoも予約語ですが、現在Javaでは使われていません。また、true, false, nullは厳密には予約語ではなくリテラル(値そのもの)ですが、予約語と同様に変数名などには使えないため、一緒に覚えておきましょう。
予約語の使い方と注意点

予約語はJavaの文法そのものであるため、私たちが使い方を定義するものではありません。決められたルールに沿って正しく配置していくことが重要です。ここでは、特に注意すべき点について解説します。
変数名やクラス名に使えない理由
なぜ予約語を変数名などに使えないのでしょうか。それは、コンパイラが文の構造を正しく解釈できなくなるからです。
例えば、
int for = 10;というコードを書いたとします。
プログラマーは「forという名前の整数型の変数に10を代入したい」という意図でしょう。しかしコンパイラは、forという単語を見た瞬間に「ここから繰り返し処理が始まるはずだ」と解釈しようとします。その後に続く= 10;という記述は、繰り返し処理の文法とは異なるため、コンパイラは混乱してエラーを出力するのです。
このように、予約語を識別子(変数名など、プログラマーが任意で付ける名前)として使うことは、文法的な混乱を招くため固く禁じられています。
IDEで自動的にハイライトされる仕組み
EclipseやIntelliJ IDEA、Visual Studio Codeといった統合開発環境(IDE)を使っていると、予約語が自動的に色付けされて表示されることに気づくでしょう。
これはIDEの便利な機能の一つで、コードの可読性を高めるためのものです。予約語、変数、文字列などがそれぞれ異なる色で表示されるため、どこが文法の構成要素で、どこがプログラマー独自の定義なのかが一目でわかります。
もし自分で付けた変数名が予約語と同じ色にハイライトされたら、それは予約語を使ってしまっているサインです。すぐに別の名前に変更しましょう。
よくある間違いとエラー例
初心者がやりがちな間違いは、やはり予約語を変数名に使ってしまうことです。
// 間違った例
public class MyProgram {
public static void main(String[] args) {
// "int"はデータ型を示す予約語なので変数名にできない
int int = 100;
// "class"はクラス定義の予約語なので変数名にできない
String class = "Java入門";
System.out.println(int);
System.out.println(class);
}
}このコードをコンパイルしようとすると、IDEやコンパイラは下記のようなエラーを出力します。
error: <identifier> expected
int int = 100;
^
error: not a statement
String class = "Java入門";
^「<identifier> expected」は、「ここには識別子(変数名など)が来るはずなのに、違うものが来ています」という意味のエラーです。このようなエラーが出た場合は、まず予約語を使っていないかを確認する癖をつけると良いでしょう。
予約語と識別子の違い

予約語と似た概念として「識別子」があります。この2つの違いを明確に理解することが、Javaプログラミングの基礎を固める上で非常に重要です。
識別子の定義
識別子とは、プログラマーがクラス、メソッド、変数などに自由につけることができる名前のことです。例えば、MyProgramやmain、args、自分で作る変数名userNameやscoreなどが識別子にあたります。
識別子を付ける際には、以下のルールを守る必要があります。
- 1文字目は英字、
$(ドルマーク)、_(アンダースコア)のいずれか - 2文字目以降は上記に加えて数字も使用可能
- 予約語は使用できない
- 大文字と小文字は区別される
予約語を識別子にできない理由
繰り返しになりますが、予約語を識別子にできないのは、コンパイラの文法解釈を妨げないためです。
予約語は「プログラムの構造を示す標識」であり、識別子は「プログラマーが付けたオリジナルの名札」と考えるとわかりやすいかもしれません。標識と同じデザインの名札を付けてしまうと、どちらがどちらか分からなくなってしまいます。
同じ理由で、Javaの世界では予約語と識別子は厳格に区別されているのです。
まとめ
この記事では、Javaの予約語の基本から一覧、注意点までを網羅的に解説しました。最後に、膨大に見える予約語と上手に付き合っていくためのコツを紹介します。
Javaの予約語を効率的に覚えるコツ
約50個の予約語を全て丸暗記する必要はありません。大切なのは、コーディングをしながら自然に身につけていくことです。
- IDEのハイライトを頼る: IDEが色を変えて教えてくれるので、常に意識しましょう。
- エラーから学ぶ: 予約語を使ってしまってエラーが出たら、「この単語は使えないんだな」と一つずつ学んでいくのが確実です。
- カテゴリで覚える: 「これは制御構文」「これはデータ型」のように、グループで役割を理解すると記憶に残りやすくなります。
無理に暗記しようとせず、たくさんのコードを読み書きする中で、体で覚えていくのが最も効率的な学習法です。
初心者が最低限押さえておくべき予約語
とはいえ、最初にこれだけは知っておくと学習がスムーズになる、という特に重要な予約語も存在します。まずは以下の15個の予約語の役割を意識してみてください。
public: 「公開されている」という意味class: クラス(設計図)を定義するstatic: オブジェクト生成なしで使えるvoid: 戻り値がないint: 整数を扱うString: (予約語ではないが)文字列を扱うクラスif: もし~ならelse: そうでなければfor: 繰り返しwhile: 繰り返しreturn: 処理を終了して値を返すnew: オブジェクトを新しく作るtrue: 「真」を表す値false: 「偽」を表す値null: 何も参照していない状態
これらの予約語は、Javaの入門的なプログラムで頻繁に登場します。一つひとつの意味を都度確認しながら学習を進めれば、きっとJavaの文法が面白く感じられるようになるはずです。