も く じStep 00 はじめに …………………………………………………………6
・本書の構成..............................................................................................6
・課題のクイズゲーム ..............................................................................7・補記 .........................................................................................................8

Step 01 プログラムの作成 ………………………………………………9・プログラムの作成と実行の手順...........................................................9・環境の確認...........................................................................................10
・ソースファイルを作成する................................................................11
・コンパイルする...................................................................................11
・実行する ..............................................................................................12・演習 ......................................................................................................12

Step 02 ソースファイルの構成 ………………………………………13
・クラス名とソースファイル名............................................................13
・main()メソッド ..................................................................................14・文 ..........................................................................................................14
・コメント文...........................................................................................15・演習 ......................................................................................................16

Step 03 画面表示（printlnとprint） ………………………………17
・System.out.println()メソッド .......................................................17・複数の文字列.......................................................................................18
・System.out.print()メソッド...........................................................18・演習 ......................................................................................................20

Step 04 数値と変数（基本データ型）…………………………………21
・変数の宣言...........................................................................................21
・基本データ型.......................................................................................22
・代入 ......................................................................................................23
・算術演算 ..............................................................................................23
・演習 ......................................................................................................24

Step 05 文字と文字列 …………………………………………………25
・文字と文字列のリテラル ...................................................................25
・文字と文字列の変数への代入............................................................25
・文字の演算...........................................................................................26
・文字列の演算.......................................................................................27
・演習 ......................................................................................................28

Step 06 特殊なリテラル ………………………………………………29
・暗黙の型変換.......................................................................................29
・数値リテラルの特殊な指定方法........................................................29
・特殊文字 ..............................................................................................30
・演習 ......................................................................................................31

2

Contents

Step 07 配列 ……………………………………………………………32
・配列の宣言...........................................................................................32
・配列のサイズ.......................................................................................33
・配列要素の処理...................................................................................34
・演習 ......................................................................................................35

Step 08 制御文（1）─ whileループ ………………………………36
・while文 ................................................................................................36
・whileの例 ............................................................................................36
・do-while文 ..........................................................................................38・演習 ......................................................................................................39

Step 09 制御文（2）─ 条件文とboolean型 ………………………40
・比較演算子...........................................................................................40
・条件の「真」と「偽」.........................................................................41・比較演算の組み合わせ .......................................................................41
・演習 ......................................................................................................43

Step 10 制御文（3）─ forループ……………………………………44
・for文.....................................................................................................44・ループの入れ子...................................................................................46
・演習 ......................................................................................................47

Step 11 制御文（4）─ ifによる分岐 ………………………………48
・if文........................................................................................................48
・ifの入れ子 ............................................................................................49
・演習 ......................................................................................................51

Step 12 制御文（5）─ if-else文による分岐 ………………………52
・if-else文 ..............................................................................................52
・if-else if ...文 ......................................................................................53
・演習 ......................................................................................................55

Step 13 制御文（6）─ ループの制御 ………………………………56
・break文 ...............................................................................................56
・ループの入れ子から抜ける場合........................................................57
・continue文.........................................................................................58
・演習 ......................................................................................................59

Step 14 Stringクラス（1）─ クラスの中身………………………60
・クラスの宣言.......................................................................................60
・フィールド...........................................................................................61
・メソッド ..............................................................................................61
・コンストラクタ...................................................................................62
・演習 ......................................................................................................63

Contents

3

Contents

Step 15 Stringクラス（2）─ メソッド……………………………64
・文字列を2つに分ける ........................................................................64
・その他のメソッド ...............................................................................65
・演習 ......................................................................................................67

Step 16 基本データ型ラッパークラス ………………………………68
・ラッパークラス...................................................................................68
・スタティックメソッド .......................................................................69
・文字列を数値に変換 ...........................................................................70・数値を文字列に変換 ...........................................................................70
・演習 ......................................................................................................71

Step 17 クラスのフィールド …………………………………………72
・クラスの構造.......................................................................................72
・あらかじめ用意されている定数フィールド ....................................73
・演習 ......................................................................................................74

Step 18 キーボードからの入力 ………………………………………75
・System.in.read()メソッド ..............................................................75
・byte配列と文字列 ..............................................................................76
・キーボードバッファとbyte配列のサイズ .......................................78
・演習 ......................................................................................................79

Step 19 キーボード入力から正しい回答を得る ……………………80
・入力処理ルール...................................................................................80・入力処理プログラム ...........................................................................81・スコープ ..............................................................................................82
・演習 ......................................................................................................84

Step 20 パッケージとインポート ……………………………………85
・クラスの正式名称 ...............................................................................85
・パッケージ...........................................................................................86
・import宣言文......................................................................................87
・演習 ......................................................................................................88

Step 21 ファイルの読み込み …………………………………………89
・FileReaderクラス .............................................................................89
・BufferedReaderクラス ...................................................................91
・演習 ......................................................................................................93

Step 22 可変サイズの配列 ……………………………………………94
・ArrayListクラス ................................................................................94
・ArrayListのメソッド.........................................................................94
・Javaのバージョンによる違い ..........................................................96
・演習 ......................................................................................................97

4

Step 23 ランダム数 ……………………………………………………98
・Randomクラス ..................................................................................98
・nextInt(int n)メソッド.....................................................................99
・首都名当てクイズの問題作成.........................................................100・演習 ...................................................................................................103

Step 24 まとめ ………………………………………………………104
・処理の流れ........................................................................................104
・プログラム........................................................................................105・演習 ...................................................................................................107

Step 25 main ()メソッド ……………………………………………108・コマンドオプション ........................................................................108
・System.exit()メソッド .................................................................108・コマンドオプションのスタイル.....................................................109
・ヘルプメソッド ................................................................................111
・演習 ...................................................................................................112

Step 26 例外処理 ……………………………………………………113
・例外発生............................................................................................113
・try-catch文 .....................................................................................114
・実行時例外とその他の例外.............................................................116
・演習 ...................................................................................................117

Step 27 クラスの書き方 ……………………………………………118
・クラスの構造....................................................................................118
・this ...................................................................................................119・アクセスレベル修飾子 ....................................................................120
・例外のスロー....................................................................................121
・演習 ...................................................................................................122

Step 28 首都名当てクイズのクラス化（1） ………………………123
・Sample24a.javaの機能分解 .......................................................123
・QuizListのフィールド....................................................................124
・QuizListのコンストラクタ ............................................................127
・QuizListのメソッド........................................................................128
・演習 ...................................................................................................128

Step 29 首都名当てクイズのクラス化（2） ………………………129
・QuizProblem ..................................................................................129
・QuizAnswer....................................................................................132
・演習 ...................................................................................................133

Step 30 首都名当てクイズのクラス化（3） ………………………134
・Quiz ..................................................................................................134
・コンパイルと実行 ............................................................................136
・jar ......................................................................................................137
・jarから実行.......................................................................................138
・演習 ...................................................................................................139

Contents

5

Step

00

はじめに
Java は、オブジェクト指向を特徴とするプログラミング言語です。とはいうものの、慣れないうちは、いきなりメソッドやらフィールドやらといわれてもわからないと思います。そこで、オブジェクト指向に特有の用語や考え方はとりあえずおいて、プログラムを書いていくことにします。そして、その過程のところどころに説明をはさむことで、オブジェクト指向に慣れてもらおうと思います。

● 本書の構成● 課題のクイズゲーム
本書で取り上げるのは、地理の問題に出てくるような、国名から首都を当てるゲームです。以下、本書ではこれを「首都名当てクイズ」とよびます。ゲームでは図 0.1 に示したように、問題として国名が、その下に選択肢として首都名がいくつか表示されます。プレーヤーは、選択肢の中からその国名の首都を選びます。結果は即座に採点され、次の問題へと続きます。問題を一定の数だけこなすとゲームは終了し、得点が表示されます。
このゲームを作り上げるには、大まかに以下の処理を行う必要があります。
1

国名/首都名のリストをファイルから読み込む

2

ランダムに国名と選択肢の首都を選択して、問題を表示する

3

プレーヤーからの回答を受け取る

4

正誤を判定した上で採点する

この本は、Java の基礎を学ぶための、30 ステップからなるワークブックです。言語を習得するには、体系的かつ網羅的に学んでいくやりかたと、実践的に使いながら必要な事柄を一点突

本書ではこれらをどのようにして行うか、順次解説していきます。

破で学んでいくやりかたの 2 通りがあると思いますが、本書は後者のアプローチをとっています。
こうした学び方の場合、何か目標があったほうが話の流れがわかりやすくなります。そこで、本書ではクイズゲームの作成を課題に掲げ、それに必要となる知識と関連する話題を、その都度説明していきます。
30 のステップは、大きく 5 部に分かれています。
第 1部（Step01〜 03）

とりあえず動くプログラムを書くことを目標に、最もシンプルなプログラムとその構成について説明します。

第 2部（Step04〜 13）

データ型、変数、配列といったデータの格納方法、代入や加減乗除などの演算方法、そしてプログラムの流れの制御といった、Java の基礎部分を説明します。ここまでで、ゲームに必要となる問題と回答選択肢の表示ができる程度までプログラムが書けるようになります。

第 3部（Step14〜 23）

課題のクイズゲームを作成するのに必要な、基本ライブラリとよばれる各種の機能を提供するクラスの説明をします。こうしC:¥temp¥java>java Quiz
Q1: ナイジェリア
1. タシケント
2. キガリ
3. アブジャ4. アンマン==> 2
外れ! 正答はアブジャ
Q2: 南アフリカ
1. ポルトープランス
2. シンガポール
3. プレトリア
4. リヤド==> 3
当たり!!
図0.1●首都名当てクイズの画面例

た機能の中には、文字列や数値の操作、ファイルの読み込み、ランダム数の生成などがあります。
第 4部（Step24〜 26）

ここまでの知識を使って、完動するクイズゲームを構築します。
また、このクイズゲームをより使いやすくするために、エラーの対処策やコマンドオプションについて説明します。

第 5部（Step27〜 30）

最後に、これまで学習してきたことをオブジェクト指向の枠組みでとらえなおした上で、プログラムをクラスの集合体に書き
換えます。

6

7

Step
● 補記
本書には、下記のような「補記」と記した枠がところどころに出てきます。ここでは、本文に関連はするものの必須とはいえない話題や、本書の範囲を超える話題を扱います。

01

プログラムの作成
Java を使ってプログラムを書くとは、どういうことでしょうか。また、どのように実行するのでしょうか。まずは、最も簡単なプログラムを例に、ソースファイルの作成とコンパイル、そして実行の方法を理解しま

補 記

しょう。

名前の意味
この「Java」という名前はどこからきたのでしょうか？

諸説ありますが、コーヒーのジャワを採って命名されていることは、Java のロゴが湯気の立つコーヒーカップであること● プログラムの作成と実行の手順からも確実でしょう（図 0.2）。一説によれば、Java を開発した人たちが足しげく出入りしプログラムの作成と実行は、図 1.1に示した順番で行います。

ていた近所のコーヒー屋から採られたとされています。

エディタで作成

図0.2 ●Java のロゴ

ソースファイル(*.java)

コンパイル(javac *.java)

クラスファイル(*. class)

実行(java *)

図1.1●Javaプログラムの作成手順

Java がコーヒー由来というのは、Java のクラスファイル（実行時に使うファイルです。
バイトコードともいいます）の先頭に、必ず「CA FE」と書かれていることからもわかります。16 進数で書かれているので、メモ帳や Word のような普通のアプリケーションではそのようには読めませんが、コンピュータの扱うバイトをそのまま 16 進数の数値として表示できるアプリケーション（Unix なら od）で読めば、この隠しメッセージをみることができます。
では、コーヒーのジャワという名前はどこからきたのでしょうか？

これは、他のコーヒ

最初にプログラムを書きます。中身については追って説明しますが、最初に知っておかなければならないのは、プログラムはエディタを使って書き、ファイルとして保存しなければならないということです。このようにして作成されたファイルをソースファイルといいます。「ソース（source）」は「源」という意味です（料理に使うソースは sauce です）。
エディタは、OS（オペレーティングシステム）についてくる簡単なものでかまいません。

ーの名称同様に地名がもとで、インドネシアを形成する島のひとつからきています。Java

Windows ならメモ帳やワードパッド、Mac OS ならテキストエディット、Unix ならば vi やと書いてジャワと読むのは変だと思うかもしれませんが、現地語では Jawa になります。ちemacs あたりが標準的です。これらを使って、メモや文書を作成する要領で書いていきます。

なみに、インドネシア首都のジャカルタはジャワ島にあります（図 0.3）。

ただし、ファイルへの保存はテキスト形式で行わなくてはなりません（図 1.2）。たとえば、ワードパッドの標準的な保存形式は RTF（リッチテキスト）ですが、これら非テキスト形式はフォントの種類や行間の長さなどのデータを埋め込むため、書いたものそのままがファイルにならスラウェシ（Sulawesi）

ハルマへラ（Halmahera）

ないからです。

ボルネオ（Borneo）
スマトラ（Sumatra）

スンバワ（Sumbawa）

ジャワ（Java）

図0.3 ●インドネシア地図

バリ（Bali）

パプア（Papua）
フローレス（Flores）

スンバ
西ティモール（Sumba）（West Timor）

図1.2●テキスト形式での保存を指定（ワードパッドの場合）

続いて、作成したソースファイルをコンパイルします。コンパイルとは、ソースファイルに文字で書かれた Java のプログラムから、Java が実行できる別の形式のファイルを生成することです。これには javac という Java コンパイラを使います。生成したファイルをクラスファイルといいます。

8

Step 01 プログラムの作成

9クラスファイルを生成したら、 java コマンドを使って実行します。これは、Windows やUnix といった OS 上のアプリケーションとして java を実行し、その java が指定のクラスファイ

なっています。それ以降の数字はアップデート等を示す補助番号なので、特に気にする必要はありません。

ルを実行するという、2 段階のステップが踏まれることを意味しています。通常のアプリケーシ

JDK そのものの他に、Java が提供する基本ライブラリの使い方を説明したドキュメントは必ョンのように、目的のアプリケーションを直接実行するのではなく、間接的になっている点に注須です。これは API ガイドとよばれ、先述のサイトから Web ブラウザで読むことができます。

意してください。

また、全文をダウンロードすることもできます。なお、ソースファイルの拡張子は必ず「.java」
です。

補 記

以下本書で Java（J が大文字）と書いた場合はプログラミング言語としての Java を、
java（j が小文字）と書いた場合はクラスファイル実行プログラムである java（Windows
ならば java.exe）を指します。

● ソースファイルを作成する
では、ソースファイルを作成しましょう。以下に掲げたプログラムを、行番号を示す各行頭の数字を除いて、エディタで正確に書き写してください。大文字小文字の違いにも意味があるので、注意してください。ファイル名は、Sample01a.java とします。なお、ソースファイルの拡張子は必ず「.java」です。

● 環境の確認

Sample01a.java

まずはじめに、Java プログラムの作成と実行が自分のコンピュータ上で可能かどうかを調べましょう。
Java の開発元であるサン・マイクロシステムズ社は Java 関係のソフトウェアを各種提供していますが、ここで必要になるのは Java プラットフォームである J2SE（Java 2 Standard
Edition）です。これには JRE と JDK の 2 種類が用意されていますが、ここで必要なのは、実

1 public class Sample01a {2
public static void main (String[] args) {3
System.out.println ("Hello World!");4}
5 }

行環境と開発ツールの両方を備えた JDK（Java Development Kit）の方です。これが自分のコンピュータに正しくインストールされていれば、javac コマンドを実行できるはずです。コ

補 記

マンド引数に何も指定しないで実行すると、次のように操作方法が表示されます（以下、本書で例題プログラム名

は端末のプロンプトを「%」記号で表します）。

例題として掲げるプログラムには、いずれも SampleNNX.java という名前をつけています。「NNX」の「NN」は Step 番号、「X」は a、b、c、……と続くその Step 内での子番% javac
使い方: javac <options> <source files>号です。いくつか登場するので、C:¥samples（Windows）や/home/samples（Unix）
といった専用のディレクトリを作っておくとよいでしょう。

使用可能なオプションには次のものがあります。

......

javac コマンドを実行して、「プログラムが存在しない」や「内部コマンドまたは外部コマン
ド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」などのエラーが表示されたら、JDK は正しくインストールされていません。http://java.sun.com/からダウンロードし、指示にしたがってインストールしてください。
JDK の最新版はバージョン 1.5（2006 年 11 月現在）です。「java● コンパイルする
コンパイルには、javac コマンドを使います。コマンド引数に作成したファイル名を指定して実行します。

-version」コマンドを実行すれば、その環境のバージョン番号を調べることができます。

% java -version
java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)% javac Sample01a.java
すると、ソースファイルとおなじディレクトリに、拡張子だけが「.class」に置き換わった
Sample01a.class というクラスファイルが生成されます。
ソースファイル中に Java の文法にのっとっていない不正な内容があれば、エラーが表示されます。以下は 3 行目の println の「l（小文字のエル）」を、「1（数字のイチ）」と誤ってタイ

9 行目の「.（ドット）」で分けられた最初の 2 つの数字がバージョン番号で、上記では 1.5 に10プしたときのエラーメッセージです。

Step 01 プログラムの作成

11

Step
% javac Sample01a.java
Sample01a.java:3: シンボルを見つけられません。
シンボル: メソッド print1n(java.lang.String)場所: java.io.PrintStream の クラス
System.out.print1n ("Hello World!");ソースファイルの構成

02

Step01 の Sample01a.java を例題に、ソースファイルの構成を説明します。より複雑な構成にすることも可能ですが、それは第 5 部（Step27 以降）で話をするとして、まずは最もシンプルなものからスタートしましょう。

エラーが発生したら、いま一度、サンプルソースファイルと自分のファイルを見比べてください。

● クラス名とソースファイル名● 実行する
作成したプログラムは java コマンドを使って実行します。java コマンドの引数に、javac

ソースファイルは、図 2.1のような構成になっています。

コマンドで生成したクラスファイルを指定して e を押し、以下のように表示されれば成功
アクセスレベルです。

クラス名（ファイル名と一致）

main () メソッド

public class Sample01a {% java Sample01a
Hello World!

public static void main (String[] args) {System.out.println ("Hello World!");ここで重要なのは、生成されたクラスファイルの名前が Sample01a.class であるのに、末尾の拡張子（.class）は指定しない点です。拡張子をつけたまま実行するとエラーになります。
これに対し、コンパイラの javac では、ソースファイルの指定で拡張子（.java）まで書かれて開き「{ 」と閉じ「} 」が対応}}
図2.1●ソースファイルの構成（最もシンプルなもの）

いないとエラーになります。使い分けに注意してください。
Java では、ソースファイルとはクラスがどのように動作するかを記述したものを指します。
こうしたクラスのファイルを必要なら複数用意し、それらを連携して動作させることで 1 つのプ
ログラムを構成します。しかし、今はまだ最初の段階ですので、1 つのファイルに書かれた 1 つ

演 習のクラスが 1つの完結したプログラムとなるような構成にします。
ソースファイルには、そのクラスの名前を最初に書きます。これをクラス宣言といいます。ク（1）自分のコンピュータにインストールされている Java のバージョンを調べよ。

ラス宣言の最初の 1 語「public」は、このクラスを誰が利用できるかを設定しています（これをアクセスレベル修飾子といいます。詳細は Step27 で説明します）。public は、誰でもアク（2）http://java.sun.com/（英文）にアクセスし、自分の使っている Java のバージョンに対応する
日本語版 API ガイドを探し、自分の Webブラウザのブックマークに登録せよ。

セスできる、を意味しており、このクラスを java から実行するには必須です。続く「class」
は、これがクラスの宣言であることを示しています。最後の「Sample01a」は、このクラスの名前です。

（3）Sample01a.java に意図的に一部誤りを入れ、コンパイルしてみよ。

クラス宣言で示したクラス名と、拡張子部分を除いたソースファイルのファイル名は一致させる必要があります。図 2.1 のようにクラス名が Sample01a ならば、ファイル名は必ず（4）クラスファイル Sample01a.class のファイル名を、たとえば Sample01a.txt のように拡張子を変更したり、foo.class のように拡張子以外の部分を変更して java コマンドを実行してみよ。
（5）OS の中には、ファイル名の大文字小文字を問わないものがある。たとえば Windows では、

SAMPLE01a.java」を実行しても Sample01a.java が開かれる。そのような OS
で、javac や java コマンドに大文字小文字が異なるファイル名を指定するとどうなるか調べよ。

「notepad12

Sample01a.java です。両者がマッチしていないと、コンパイラがエラーを報告します。
クラスの宣言のあとに「{（開き中括弧）」を書き、それ以降に、クラスが何をするのか、つ」で閉めて、このクラスを終わります。
まりプログラムを書きます。最後に「}（閉じ中括弧）
なお、1 つのクラスファイルには 1 つのクラスのみを記述するのが基本です（複数書いたり、クラスの中にクラスを書くこともできますが、そうした話題は本書では扱いません）。

Step 02 ソースファイルの構成

13

● main()メソッド● コメント文

クラス宣言の中括弧の間には、このクラスの動作を記述するメソッドを書きます。メソッドも、プログラム中には、プログラムそのものである文だけでなく、自分の覚え書きも書き込むことクラスと同様に、まずメソッドの宣言を書き、それに続けて具体的な動作内容を中括弧でくくっができます。これをコメント文といいます。コンパイラはコメント文を無視して処理を行うので、て書きます。

コメント文があってもプログラムの動作そのものには影響しません。

1 つのメソッドには、クラス全体の機能の一部を担当させるので、一般的には 1 つのクラス内

コメント文にはいくつか書き方があります。「//」と書けば、この記号から行末までがコメンに複数のメソッドを書くことになります。しかし、ここは超簡単版ということで、全機能をすべトとして扱われます。行単位なので、コメント中での改行はできません。「/*」と「*/」ではさて書き込んだメソッドを 1 つだけ書きます。このメソッドには main() と名前をつけます。

んだ部分も、これらの記号を含めてコメント文とみなされます。このスタイルのコメントはど

main()メソッドは、java コマンドがクラスファイルを実行するときに起動する（呼び出す）、

こにでも書き込むことができ、内部で改行することも可能です。コメント文の記述例を次に示

特殊なメソッドです。これがないと、java からの実行はできません。

します。

java は、クラスファイルを実行するとき、クラス内に書かれた main()メソッドを探します。
そして、main()メソッドの中括弧に囲まれた内容を、上から順に逐一実行していきます。そして終わり（閉じ中括弧）に到達すると、プログラムを終了します。

// ここで表示を行う
System.out.println ("Hello World!");main() メソッドの宣言は、図 2.1 に示したように、 public static void main
(String[] args)と書きます。とりあえずはそのまま書き写してください。いずれこの呪文

System.out.println ("Hello World!");の意味は説明します。

/* ここで// ここで表示を行う

表示を行う */
System.out.println ("Hello World!");●文

System.out.println ("Hello World!");クラスを宣言し、その中に main()メソッドを書けば、あとは実際のプログラムを書き込んでいきます。プログラムの長さはさまざまですが、いずれも文という最小の動作単位を組み合わせて構成されます。文を組み合わせて文章を構成するのとおなじ感じです。
文の終わりは、「;（セミコロン）」で示されます。文章にたとえれば、「;」は句点（「。」のこと）に相当します。たとえば、図 2.1 の 3 行目は「;」で終わっているので 1 つの文です。この/* ここで表示を行う */どちらのスタイルをどのように使ってもかまいませんが、本書では、ほとんどの場合//を使うことにします。なお、javadoc とよばれるドキュメント作成用の特殊なコメント記号として「/**」と「*/」もありますが、本書では扱わないので説明は割愛します。
表 2.1に、Java のコメント文についてまとめておきます。

文の場合は、括弧の中身を表示するという動作をします。1 文はできれば 1 行で書いたほうが読表2.1●Java のコメント

みやすいのですが、長い文の場合は間で折り返して複数行にすることもできます。

記号

使い方

//
/* */
/** */

この記号以降はコメント。短いコメントを書くときに使う。

文を構成するものには、変数の宣言や代入、加減乗除のような演算、プログラムの流れの制御、メソッドの呼び出しなどがありますが、これらについては追々説明します。ここではとりあえず、
プログラムは文単位で構成され、文末には「;」が必要だという点だけを覚えてください。

間にコメントを書く。長かったり数行にわたったコメントに便利。

javadoc 用。

プログラムを構成する文は main()の中括弧の内側に、main()はクラス宣言の内側に書かれているので、全体としては中括弧が 2 重の入れ子になっています。文自体も中括弧を使うことがあるので、入れ子は 3 重にも 4 重にもなります。そうしたとき、どの開き中括弧がどの閉じ中括弧に対応しているか、文がどのレベルの中括弧に属するのかをわかりやすくするため、入れ子になるたびに順に行頭を数文字下げます。これをインデントといいます。図 2.1 やSample01a.java ではインデントを 2 文字分にしていますが、何文字にしてもかまいません。
まったくなくても、コンパイラはエラーにはしません。

14

Step 02 ソースファイルの構成

15

演 習
（1）ソースファイル名と宣言されたクラス名が異なるとき、コンパイラがどのようなエラーを出すか調べよ。
（2）以下のように、ソースファイル中に 2 つのクラス宣言を書き込むと、コンパイラがどのようなエラーを出すか調べよ。

public class Sample02a {}public class Sample02b {}（3）以下のように、クラス宣言だけで中身はカラのソースファイルを作成したとき、q コンパイルは可能か、w コンパイルが成功したなら実行できるかを調べよ。

public class Sample02a {}（4）Sample01a.java を以下のように改行もインデントもなしで書き、コンパイルしてみよ（印刷では複数行になっていますが、1 行に続けて書きます）。

public class Sample01a {public static void main (String[] args){System.out.println ("Hello World!");}}（5）//と/**/の2種類のコメントを使って、Sample01a.java内に作成日と作成者の名前を書き込め。また、プログラムを実際に動かして、コメントがプログラムには影響しないことを確かめよ。

16