Javaを学習するにあたり、とりあえずで実践的なコードを書き始めることも大事ですが、まずは基本的な構文ルールをしっかり理解しておくことが重要です。この{}はいる?この;は必要?コメントはどう記述すればよい・・・etc
このページではJavaの基本的な構文ルール5つを簡潔にかつ分かりやすく初心者向けにご説明します。
ポイント Javaの構文ルール5つ
1:クラスの定義
Javaのプログラムはクラスの定義から始まります。Javaはクラスを基本として構成される言語であるため、何はともあれクラスを定義しないことにはJavaのプログラミングは始まりません。
クラスは、以下のように記述します。
public class MyClass { // ここにクラスの内容を書く }
クラスとは、実際の世界で物や事象を表現するための設計図のようなもの。たとえば、車や動物、人など、具体的なものから抽象的な概念まで、さまざまな「もの」をプログラム内で表現するためにクラスを使います。
「public」という単語は、このクラスがどこからでもアクセス可能であることを意味します。これを「アクセス修飾子」と呼びます。「public」以外にも様々なアクセス修飾子がありますが、これは追って学習していきますので、今はまずはおまじないのようなものだと思っておきましょう。
参考 アクセス修飾子とは?
「class」という単語の後に続く「MyClass」はクラスの名前。名前は基本的にプログラマーが自由に決めることができますが、Javaでは名前の最初の文字を大文字にするのが一般的です。
public class MyClass { // ここにクラスの内容を書く }
クラスの中には、次以降の章で解説していく、クラスの特性を表すデータ(変数)や、クラスが行う操作(メソッド)を記述していきます。これらを使って、プログラムがどのように動作するかを定義していきます。
クラスとオブジェクトについての詳細は↓をチェック!
2:メソッドの定義
続いてはメソッドについて。「メソッド」とは、クラスの具体的な動作や処理を表すもの。例えば「車」クラスであれば、アクセルを踏む、とかハンドルを右に回す、とかその車がどのような振る舞いをするのかを表すようなイメージを持てればOK。
メソッドは特定のタスクを行うためのコードのブロックであり、プログラムが特定の操作を必要とするときに呼び出されて実行されます。
メソッドを定義する基本的な構造は以下の通り。
public class MyClass { public static void myMethod() { // ここにメソッドの処理を書く } }
↑の、public static void myMethod()
がメソッドの定義部分です。それぞれのキーワードの説明は以下の通りです。
public
: このメソッドがどこからでもアクセス可能であることを意味する。クラス同様です。static
: このキーワードがあると、メソッドがクラスに属しており、クラスのインスタンスを生成しなくても呼び出すことができる、→つまり、クラス名だけで直接メソッドを使用することが可能になります。
(参考 staicキーワードの意味と使い方)void
: メソッドが何も値を返さないことを示す。もし何か値を返す場合は、void
の代わりにそのデータ型(int
,String
など)を指定します。myMethod()
: メソッド名。このメソッドが呼ばれるときに使用されます。メソッド名もクラス名と同様に自由に命名できますが、何をするメソッドなのかを表すわかりやすい名前をつけるのが一般的です。
メソッドの構文ルールや使い方を詳しく知りたい方は以下をチェック!
mainメソッド
Javaプログラムの中で特に重要なメソッドがmain
メソッドです。これはJavaアプリケーションの実行開始点として、プログラム実行時にJavaランタイムによって自動的に呼び出されるメソッドとして機能します。
public static void main(String[] args) { // プログラムの開始時に実行されるコード }
main
メソッドは常にpublic static void main(String[] args)
の形式をとります。これはもはやお決まりのおまじないとして記述するようなイメージでOK。(※args
はコマンドラインからプログラムに渡される引数を受け取るためのパラメータです。)
複数のクラスがあるプログラムで複数のmain
メソッドを持つことも技術的には可能ですが、プログラムを実行する際にはどのmain
メソッドをエントリーポイントとして使うかを指定する必要があります。→つまり、コマンドラインから実行するクラスを指定する必要があるということになるので、1クラス1main
メソッドが基本的な使い方です。
ルール1のクラス定義、ルール2のmainメソッド定義。この2つがJavaのプログラム構成の基本要素。この枠組みの中で、具体的な処理ロジックを記述していくことで1つのプログラムができあがります。
3:変数の宣言
続いてプログラミングの最初の1歩。変数について。
変数とはデータを一時的に格納するための容器・箱のようなもの。変数に格納したデータはプログラムのどこからでも参照・操作できるようになります。
変数を使うためには、最初にその型(どんな種類のデータを保存するか)と名前(その変数を指し示すためのラベル)を定める必要があります。これを「変数の宣言」と呼びます。
変数の宣言の基本形式
型 変数名; // 例えば、整数を格納する変数を宣言する場合、以下のように書きます: int number;
変数の初期化
変数を宣言した後、その変数に設定したい初期値を指定することができます。これを「変数の初期化」と呼びます。変数は以下のような形で宣言と同時に初期化を行うのも一般的です。
int number = 10; // 「10」がnumber変数の初期値として設定されている
変数の種類:データ型
ここでは、変数宣言時に理解しておきたい主なデータ型を表形式で整理しておきます。
以下は基本的なデータ型(プリミティブ型)と参照型(主にクラスから作られるオブジェクト型)に分けて紹介します。
プリミティブ型(基本データ型)
プリミティブ型は、Javaが予め用意している基本的なデータ型。整数、浮動小数点数、文字、真偽値を直接格納するためのもので、変数はメモリ上に直接値を保持します。
データ型 | 説明 | 例 |
---|---|---|
byte | 8ビット符号付き整数。小さい整数値を節約して格納する際に使用。 | byte b = 100; |
short | 16ビット符号付き整数。byte より大きい整数を格納。 | short s = 1000; |
int | 32ビット符号付き整数。整数のデフォルト型。 | int i = 100000; |
long | 64ビット符号付き整数。非常に大きな整数値を格納。 | long l = 100000L; |
float | 単精度32ビットIEEE 754浮動小数点。 | float f = 10.5f; |
double | 倍精度64ビットIEEE 754浮動小数点。浮動小数点数のデフォルト型。 | double d = 10.5; |
boolean | true かfalse のみを格納する論理値。 | boolean bool = true; |
char | 単一の16ビットUnicode文字。 | char c = 'a'; |
たくさんありますが、基本的には赤字で示したものを覚えておけばOK。特に初心者のうちは、返って混乱のもとになってしまうので、int → 数値、boolean → true/false、char → 文字列!というぐらい、ざっくり覚えておくことをおすすめします。
参照型
参照型は、オブジェクトや配列などの複雑なデータ構造への参照(つまりアドレス)を格納する変数です。参照型の変数は、データそのものではなく、データが格納されているメモリの位置(アドレス)を指し示します。
初心者向けに、ざっくり言えば「既に存在する『型』を利用する」というイメージでOK。
4:文の終了
Javaではプログラムを書く際に命令や操作を「文」として表現します。文はプログラムが何をすべきかをコンピュータに指示するためのもので、これは英語の文法で言うところの「句点(ピリオド)」にあたるものです。
文を区切り、完了させるためにはセミコロン(;
)を使います。このセミコロンが、文の終わりを明示的に示しています。
int number = 10; // 変数numberに10を代入する文 number = number * 2; // numberの値を2倍にして、再びnumberに代入する文 System.out.println(number); // numberの値を出力する文
セミコロンを使うことで、Javaのコンパイラ(Javaのコードを機械が理解できる形に変換するプログラム)は、1つの操作がどこで終わり、次の操作がどこから始まるのかを正確に理解することができるようになります。これがないと、プログラムは「文がどこで終わるのか」を判断できず、エラーを引き起こします。
特別なケース
ただし、すべてのJavaコード行がセミコロンで終わるわけではありません。例えば、制御構造(if文、forループなど)の後ろにはセミコロンは不要です。
if (number > 10) { System.out.println("Number is greater than 10"); }
この場合、if
文の条件後のブロック({}
で囲まれた部分)はセミコロンなしで終わります。
文の終了を正しく理解し、適切にセミコロンを使用することは、Javaプログラミングの基本的な部分であり、エラーフリーなコードを書くために非常に重要です。
5:コメントの使い方
コメントは、コードの中に書かれる説明やメモでプログラムの実行には影響を与えません。コメントはプログラムを他の人が読んだり、後で自分が見返したりする際に理解を助けるためのものです。
コメントの種類
Javaには2つの主なコメントの書き方があります。
1. 一行コメント
一行コメントは、二つのスラッシュ //
で始めます。//
を利用することで、スラッシュ以降の行末までがコメントとして扱われます。一行コメントは短いメモや、コードの特定の部分を一時的に無効化する際に便利です。
// これは一行コメントです int number = 10; // この部分から行末まではコメントです
2. 複数行コメント
複数行コメントは、/*
で始まり */
で終わります。この間の全ての内容がコメントとなります。複数行にわたる説明や、大きな節の説明を書くときに使われます。
/* このコメントは複数行にわたります Javaのプログラムでは、このようなコメントを 長い説明に使うことができます。 */
コメントの重要性
コメントは、コードが何をしているのかを説明するのに役立ちます。特に複雑なアルゴリズムや、後から見たときに「なぜこのような実装をしたのか」を思い出すのに便利。
チームで開発を行う場合は、他のメンバーがコードを理解するのを助けるためにも役立ちます。
以下は良いコメントの例で、具体的で必要な情報を簡潔に伝えるようなものです。
// 速度を計算する(距離/時間) double speed = distance / time;
コメントを使用する際は、過剰に書きすぎないことも重要です。コード自体が明快で自己説明的な場合は、コメントは少なめにして、本当に説明が必要な部分にのみ使用すると良いでしょう。