Javaを学習するにあたり、とりあえずで実践的なコードを書き始めることも大事ですが、まずは基本的な構文ルールをしっかり理解しておくことが重要です。この{}はいる?この;は必要?コメントはどう記述すればよい・・・etc
このページではJavaの基本的な構文ルール5つを簡潔にかつ分かりやすく初心者向けにご説明します。
ポイント Javaの構文ルール5つ
1:クラスの定義
Javaのプログラムはクラスの定義から始まります。Javaはクラスを基本として構成される言語であるため、何はともあれクラスを定義しないことにはJavaのプログラミングは始まりません。
クラスは、以下のようにclassキーワードを利用します。
class クラス名 { // フィールドやメソッドを定義 }
クラスのポイント
class
:クラスを定義するためのキーワード。これがクラスの基礎となります。- クラス名は、Javaの命名規則に従い大文字で始めることが推奨されています。
以下が超・シンプルなクラス定義のサンプルコードです。classキーワードでクラス名を記述して{}で開始と終了を示すだけです。
class Greeting { public void sayHello() { System.out.println("Hello!"); } }
そもそも・・・クラスとは?
クラスとは、実際の世界で物や事象を表現するための設計図のようなものです。たとえば、車や動物、人など、具体的なものから抽象的な概念まで、さまざまな「もの」をプログラム内で表現するためにクラスを使います。
Java初心者でも何となくのイメージが湧くように「車」クラスを定義するサンプルコードがこちら。(※細かい箇所は意識せず、コード中のコメントを読んでイメージを膨らませてみてください。)
// 車のクラスを定義する class Car { // フィールド(車の属性を表現) String color; // 車の色 String manufacturer; // メーカー名 int speed; // 現在の速度 // 車を初期化するためのコンストラクタ public Car(String color, String manufacturer) { this.color = color; this.manufacturer = manufacturer; this.speed = 0; // 初期速度は0 } // 車を加速するメソッド public void accelerate(int increment) { speed += increment; System.out.println(manufacturer + "の車が" + speed + "km/hまで加速しました。"); } // 車を停止するメソッド public void stop() { speed = 0; System.out.println(manufacturer + "の車が停止しました。"); } // 車の状態を表示するメソッド public void showStatus() { System.out.println("この車の色は " + color + "、メーカーは " + manufacturer + " です。"); } } // 実行するクラス(メインメソッドを含む) public class CarDemo { public static void main(String[] args) { // 車のインスタンス(具体例)を作成 Car myCar = new Car("赤", "トヨタ"); // 車の状態を表示 myCar.showStatus(); // 車を加速 myCar.accelerate(50); // 車を停止 myCar.stop(); } }
実際のプログラム開発の現場では、同じ機能を複数の場所で使い回したり、状態を個別に管理することが重要です。上記の例で言えば、クラスを使うことで性質の異なる複数の「車」を作成し異なる処理を実行させたり、特定の「車」を拡張させたりすることが可能になってきます。
このページでは、Javaの基本的な構文ルールに焦点を当てているため、より詳しく「クラスとは何か?」を学習したい方は以下のページをご覧ください。
2:メソッドの定義
メソッドとは、クラスの具体的な動作や処理を表すもの。例えば「車」クラスであれば、アクセルを踏む、とかハンドルを右に回す、とかその車がどのような振る舞いをするのかを表すようなイメージを持てればOKです。
メソッドを定義する基本的な構造は以下の通り。
戻り値の型 メソッド名(引数) { // メソッドの処理 return 戻り値; }
メソッドのポイント
- メソッドは処理をまとめた部品で、クラス内に定義されます。
- 戻り値の型や引数を指定して、柔軟に動作を定義できます。
シンプルなサンプルコードがこちら。
class Greeter { // あいさつをするメソッド String sayHello() { return "こんにちは!"; } }
戻り値の型を書き、そのあとにメソッド名を記述します。メソッドに必要な引数リストを()
で囲み、メソッドの処理内容を{}
の中に。最後にreturn キーワードで返す値を決めるだけ。
より詳細なメソッド定義については以下のページで学習しましょう。
参考 メソッドの定義と呼び出し
mainメソッドについて
Javaプログラムの中で特に重要なメソッドであるmain
メソッドについてご説明します。
このメソッドはJavaアプリケーションの実行開始点として、プログラム実行時にJavaランタイムによって自動的に呼び出されるメソッドとして機能します。わかりやすくいえば「このメソッドからプログラムが動きますよ!」というメソッドがmain
メソッドです。
public static void main(String[] args) { // プログラムの開始時に実行されるコード }
main
メソッドは必ずpublic static void main(String[] args)
の形式をとります。これはもはやお決まりのおまじないとして記述するようなイメージでOK。(※args
はコマンドラインからプログラムに渡される引数を受け取るためのパラメータです。)
複数のクラスがあるプログラムで複数のmain
メソッドを持つことも技術的には可能ですが、プログラムを実行する際にはどのmain
メソッドから動かし始めるか?を指定する必要があり、その役割を担うのがmain
メソッド。こちらも詳細は参考メソッドの定義と呼び出しのページでご確認ください。
3:変数の宣言
変数とはデータを一時的に格納するための容器・箱のようなもの。変数に格納したデータはプログラムのどこからでも参照・操作できるようになります。
変数を使うためには、最初にその型(どんな種類のデータを保存するか)と名前(その変数を指し示すためのラベル)を定める必要があります。これを「変数の宣言」と呼びます。
Java:変数の宣言の基本形式
型 変数名; // 例えば、整数を格納する変数を宣言する場合、以下のように書きます: int number;
変数の初期化
変数を宣言した後、その変数に設定したい初期値を指定することができます。これを「変数の初期化」と呼びます。どちらかというと、こちらの書き方の方が一般的です。尚、変数名は英語/アンダースコアで始めないといけない制約があります。
int number = 10; // 「10」がnumber変数の初期値として設定されている
変数宣言/初期化のポイント
- 変数は「型」と「名前」を指定して宣言します。
- 宣言と同時に初期値を代入するのが一般的です。
- 変数名は英字またはアンダースコア(_)で始める(数字で始めてはいけない)。
- 変数名は小文字で始めるのが一般的。
- 複数の単語を使う場合は「キャメルケース」(例:
myAge
)で書く。
変数の種類:データ型
ここで変数宣言時に理解しておきたい「データ型」について整理しておきましょう。
Javaの基本的なデータ型(プリミティブ型)と参照型(主にクラスから作られるオブジェクト型)に分けて紹介します。ここでは概要レベルで解説するので、1からミリミリ詳しく学習したい方は「Javaの変数の仕組み:プリミティブ型と参照型の違い」をご覧ください。
プリミティブ型(基本データ型)
プリミティブ型は、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;
コメントを使用する際は、過剰に書きすぎないことも重要です。コード自体が明快で自己説明的な場合は、コメントは少なめにして、本当に説明が必要な部分にのみ使用すると良いでしょう。
6:大文字と小文字は区別される
Javaでは、大文字と小文字を違うものとして扱います。たとえば、apple
と Apple
は同じ名前ではなく、別物として認識されます。
int apple = 5; // 小文字のapple int Apple = 10; // 大文字のApple System.out.println(apple); // 5 System.out.println(Apple); // 10
ポイント
- Javaは大文字・小文字を厳密に区別します。
- 変数やクラスの名前を書くときは、一貫した書き方を心がけましょう。
- 例:変数名は小文字で始める(
myNumber
) - クラス名は大文字で始める(
MyClass
)
- 例:変数名は小文字で始める(
問題 1:Hello Worldプログラム
お題:
- Javaで「Hello, World!」と画面に表示するプログラムを1から作る。
ヒント:
- クラスの名前は「HelloWorld」にします。
main
メソッド内で「Hello, World!」を表示します。- 出力には
System.out.println()
を使います。
class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } // 実行結果 // Hello, World!
問題 2:足し算プログラム
お題:
- 2つの整数を足して、その結果を表示するプログラムを1から書いてください。
ヒント:
- クラス名は「Addition」にします。
main
メソッドの中で、2つの整数を用意します(例:5 と 10)。- それらを足して、結果を画面に表示します。
class Addition { public static void main(String[] args) { int a = 5; int b = 10; int sum = a + b; System.out.println("合計: " + sum); } }