本ページはプロモーションが含まれています

Java入門

【Java初心者必見】50個の予約語一覧と使い方を徹底解説!

トム

・都内自社開発IT企業勤務/javaのバックエンドエンジニア
/java歴10年以上 ・首都圏在住30代
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎 詳細なプロフィールはこちら

「Javaの勉強を始めたけど、よく見る英単語の意味がわからない…」

「publicやstaticって、おまじないのように書いているだけ…」

「変数に名前を付けようとしたら、なぜかエラーが出てしまう…」

Javaの「予約語」というルールを一度理解してしまえば、エラーは格段に減り、コードを読むスピードも書くスピードも飛躍的に向上します。

この記事では、Javaを学び始めたあなたが「予約語とは何か」を根本から理解し、自信を持ってコーディングできるようになることを目指します。

Javaの予約語とは?

Javaの予約語とは、Javaの文法の中で特別な意味を持つ、あらかじめ予約された単語のことです。これらはプログラムの骨格を作るために用意されており、私たちはそのルールに従ってコードを記述する必要があります。

予約語の基本的な意味と役割

予約語は、例えるなら日本語の「てにをは」のような助詞や、文章の構造を示す句読点のような役割を担います。「もし~ならば」を意味するif、「~の間ずっと」を意味するwhileなど、それぞれの予約語が特定の機能を持っています。

Javaコンパイラ(プログラムを機械がわかる言葉に翻訳する機械)は、これらの予約語を目印にして文の構造を理解し、プログラムの動作を決定します。つまり、予約語はプログラマーとコンパイラの間の「共通言語」なのです。

なぜ予約語を知っておく必要があるのか

予約語を知っておく理由は、主に2つあります。

理由

  1. 予期せぬエラーを防ぐため予約語は特別な役割を持っているため、変数名やメソッド名(自分で作る機能の名前)として使用できません。もし使おうとすると、コンパイラが「この単語は文法的にここにあるべきではない」と判断し、コンパイルエラーを引き起こします。予約語を知っていれば、このような命名によるエラーを未然に防げます。
  2. コードを正しく読み書きするため他人が書いたコードを読むとき、予約語を知っていれば、どこがプログラムの構造で、どこが独自に定義された部分なのかを瞬時に見分けられます。これを知っていれば、コードの理解度が格段に向上するでしょう。もちろん、自分でコードを書く際にも、文法的に正しいプログラムをスムーズに組み立てる助けになります。

Javaに存在する全ての予約語一覧

Javaには約50個の予約語が存在します。全てを一度に暗記する必要はありませんが、どのような種類があるのかをカテゴリ別に把握しておくと学習がスムーズに進みます。

制御構文に関する予約語(if, for, while など)

プログラムの流れをコントロールするための予約語です。条件分岐や繰り返し処理など、プログラミングの基本的なロジックを組み立てる際に使用します。

予約語意味
ifもし~ならば(条件分岐)
elseそうでなければ(条件分岐)
for指定回数の繰り返し
while条件が成り立つ間の繰り返し
dowhileとセットで使い、最低1回は実行する繰り返し
switch値に応じて処理を分岐させる
caseswitch文で使う分岐先のラベル
defaultswitch文で、どのcaseにも一致しない場合の処理
break繰り返し処理やswitch文を中断する
continue繰り返し処理をスキップして次の繰り返しへ進む
returnメソッドの処理を終了し、値を返す

データ型に関する予約語(int, double, boolean など)

変数や定数がどのような種類のデータ(数値、文字、真偽値など)を扱うのかを定義するための予約語です。

予約語意味
byte8ビットの整数
short16ビットの整数
int32ビットの整数
long64ビットの整数
float32ビットの浮動小数点数
double64ビットの浮動小数点数
char16ビットのUnicode文字
booleantruefalseの真偽値
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抽象クラスや抽象メソッドを定義する
nativeJava以外の言語で実装されたメソッドを示す
strictfp浮動小数点計算の精度を厳密にする
transientシリアライズ(オブジェクトの保存)対象外にする
volatile複数スレッド間で変数の値が常に最新に保たれるようにする

例外処理やマルチスレッド関連の予約語(try, catch, synchronized など)

プログラムの実行中に発生するエラー(例外)を処理したり、複数の処理を同時に実行(マルチスレッド)したりするための予約語です。

予約語意味
try例外が発生する可能性のある処理を囲む
catch発生した例外を捕まえて処理する
finally例外の有無にかかわらず必ず実行する処理
throw意図的に例外を発生させる
throwsメソッドが例外を発生させる可能性があることを示す
assertプログラムの前提条件をチェックする
synchronized複数のスレッドが同時にアクセスしないように制御する

その他、constgotoも予約語ですが、現在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プログラミングの基礎を固める上で非常に重要です。

識別子の定義

識別子とは、プログラマーがクラス、メソッド、変数などに自由につけることができる名前のことです。例えば、MyProgrammainargs、自分で作る変数名userNamescoreなどが識別子にあたります。

識別子を付ける際には、以下のルールを守る必要があります。

  • 1文字目は英字、$(ドルマーク)、_(アンダースコア)のいずれか
  • 2文字目以降は上記に加えて数字も使用可能
  • 予約語は使用できない
  • 大文字と小文字は区別される

予約語を識別子にできない理由

繰り返しになりますが、予約語を識別子にできないのは、コンパイラの文法解釈を妨げないためです。

予約語は「プログラムの構造を示す標識」であり、識別子は「プログラマーが付けたオリジナルの名札」と考えるとわかりやすいかもしれません。標識と同じデザインの名札を付けてしまうと、どちらがどちらか分からなくなってしまいます。

同じ理由で、Javaの世界では予約語と識別子は厳格に区別されているのです。

まとめ

この記事では、Javaの予約語の基本から一覧、注意点までを網羅的に解説しました。最後に、膨大に見える予約語と上手に付き合っていくためのコツを紹介します。

Javaの予約語を効率的に覚えるコツ

約50個の予約語を全て丸暗記する必要はありません。大切なのは、コーディングをしながら自然に身につけていくことです。

  • IDEのハイライトを頼る: IDEが色を変えて教えてくれるので、常に意識しましょう。
  • エラーから学ぶ: 予約語を使ってしまってエラーが出たら、「この単語は使えないんだな」と一つずつ学んでいくのが確実です。
  • カテゴリで覚える: 「これは制御構文」「これはデータ型」のように、グループで役割を理解すると記憶に残りやすくなります。

無理に暗記しようとせず、たくさんのコードを読み書きする中で、体で覚えていくのが最も効率的な学習法です。

初心者が最低限押さえておくべき予約語

とはいえ、最初にこれだけは知っておくと学習がスムーズになる、という特に重要な予約語も存在します。まずは以下の15個の予約語の役割を意識してみてください。

  1. public: 「公開されている」という意味
  2. class: クラス(設計図)を定義する
  3. static: オブジェクト生成なしで使える
  4. void: 戻り値がない
  5. int: 整数を扱う
  6. String: (予約語ではないが)文字列を扱うクラス
  7. if: もし~なら
  8. else: そうでなければ
  9. for: 繰り返し
  10. while: 繰り返し
  11. return: 処理を終了して値を返す
  12. new: オブジェクトを新しく作る
  13. true: 「真」を表す値
  14. false: 「偽」を表す値
  15. null: 何も参照していない状態

これらの予約語は、Javaの入門的なプログラムで頻繁に登場します。一つひとつの意味を都度確認しながら学習を進めれば、きっとJavaの文法が面白く感じられるようになるはずです。

  • この記事を書いた人
  • 最新記事

トム

・都内自社開発IT企業勤務/javaのバックエンドエンジニア
/java歴10年以上 ・首都圏在住30代
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎 詳細なプロフィールはこちら

-Java入門