第2章で動かした Hello.java には、Java のプログラムの基本の形がすべて入っています。この章では、その1行1行の意味を学び、画面に文字や数を表示する書き方と、コメントの書き方を身に付けます。あわせて、入力を楽にする Eclipse の補完の使い方も覚えます。
この章で学ぶこと
- クラスと
mainメソッドの役割 - 文と
;、ブロックと{} -
System.out.printlnとSystem.out.printで画面に表示する - コメントの3つの書き方
- インデント、補完(Ctrl + Space)、フォーマット
3.1 この章で作るもの
この章では、ch03 パッケージを作り、その中に練習用のクラス Basic を作ります。章の最後には、実行するとコンソールに次のように表示されるようになります。
Hello, Java!
社員管理アプリ
社員の数は3人です
1 + 2 = 3
| ファイル | 作業 | 内容 |
|---|---|---|
ch03/Basic.java |
新規 | プログラムの基本の形を確かめる練習用のクラス |
3.2 Basic.java を作る
第2章と同じ手順で、パッケージとクラスを作ります。
-
srcを右クリックし、新規 → パッケージ を選びます。「名前」にch03と入力し、「完了」をクリックします(第2章「パッケージを作る」)。 -
作った
ch03パッケージを右クリックし、新規 → クラス を選びます。「名前」にBasicと入力し、「public static void main(String[] args)」に チェックを入れて、「完了」をクリックします(第2章「クラスを作る」)。 -
// TODOの行を消して、緑の行を入力します。ch03/Basic.javapackage ch03; public class Basic { public static void main(String[] args) { System.out.println("Hello, Java!"); } } -
保存ボタンか Ctrl + S で保存し、タブの「●」が消えたことを確認します。
-
Basic.javaを右クリックし、実行 → Java アプリケーション を選びます。コンソールに次のように表示されることを確認します。コンソールHello, Java!
【再確認】クラスは、入れるパッケージを右クリックして作る
クラスを作るときは、必ず 入れるパッケージ(この章では ch03)を右クリックして「新規 → クラス」を選んでください。src やプロジェクトを右クリックすると、「パッケージ」の欄が空のままになり、パッケージに入らないクラスができてしまいます。
3.3 クラスと main メソッド
Basic.java の全体を見てみましょう。Java のプログラムは、次の3つが入れ子になった形をしています。
| 行 | 意味 |
|---|---|
package ch03; |
このクラスが ch03 パッケージに入っていることを表す。ファイルの先頭に書く。Eclipse が自動で書いてくれる |
public class Basic { … }
|
クラス の定義。Java のプログラムは、必ずクラスの中に書く。クラス名はファイル名(Basic.java)と同じにする |
public static void main(String[] args) { … }
|
main メソッド。プログラムを実行すると、JVM はまずこのメソッドを探して、中に書かれた処理を上から順に実行する。プログラムの入り口 |
System.out.println("Hello, Java!"); |
画面(コンソール)に Hello, Java! と表示する 文
|
public・static・void・String[] args の意味は、第6章・第7章・第9章で学びます。今は、「main メソッドの行は、この形で決まっている」と覚えてください。クラスを作るときに「public static void main(String[] args)」にチェックを入れると、Eclipse がこの形を書いてくれます。
【知識メモ】main メソッドの無いクラス
main メソッドが必要なのは、実行の入り口になるクラスだけです。第8章からは、main メソッドの無いクラス(社員を表すクラスなど)も作ります。そのようなクラスは、単独では実行せず、main メソッドのあるクラスから使います。
3.4 文とブロック
文と ;
プログラムの中の1つ1つの処理を 文 といいます。文の終わりには、必ず ;(セミコロン)を付けます。System.out.println("Hello, Java!"); は1つの文です。
文は、main メソッドの { と } の間に、上から順に書きます。文を2つにしてみましょう。
-
Basic.javaに緑の行を書き足します。ch03/Basic.javapackage ch03; public class Basic { public static void main(String[] args) { System.out.println("Hello, Java!"); System.out.println("社員管理アプリ"); } } -
保存して実行します。コンソールに2行表示されます。
コンソールHello, Java! 社員管理アプリ
文は、書いた順に実行されます。2つの行を入れ替えると、表示の順も入れ替わります。
ブロックと { }
{ と } で囲んだ範囲を ブロック といいます。クラスの中身も、main メソッドの中身もブロックです。{ と } は必ず対にします。Eclipse では { を入力して Enter キーを押すと、対になる } が自動で入ります。
【ご注意】; と } の付け忘れ
Java で最も多い間違いは、文の終わりの ; と、ブロックを閉じる } の付け忘れです。付け忘れると、Eclipse がその行の左に赤い「×」を付けて教えてくれます。「×」にマウスを合わせると、「構文エラーがあります。";" を挿入して…」のような理由が表示されます(付録A「コンパイルエラーの読み方」)。
3.5 画面に表示する
println と print
System.out.println(…) は、( と ) の間に書いたものをコンソールに表示して、最後に改行する 文です。似たものに System.out.print(…) があり、こちらは 改行しません。
-
Basic.javaに緑の行を書き足します。ch03/Basic.javapackage ch03; public class Basic { public static void main(String[] args) { System.out.println("Hello, Java!"); System.out.println("社員管理アプリ"); System.out.print("社員の数は"); System.out.print(3); System.out.println("人です"); } } -
保存して実行します。
printで表示した2つは改行されず、1行につながります。コンソールHello, Java! 社員管理アプリ 社員の数は3人です
文字列と数
"社員の数は" のように、"(ダブルクォーテーション)で囲んだ文字の並びを 文字列 といいます。一方、3 のように " で囲まない数字は 数 として扱われます。どちらも println や print で表示できます。
文字列は + でつなげられます。数も + でつなげると、文字列の一部になります。
-
printの3行を、+でつないだ1行に書き換え、さらに1行書き足します。ch03/Basic.javapackage ch03; public class Basic { public static void main(String[] args) { System.out.println("Hello, Java!"); System.out.println("社員管理アプリ"); System.out.println("社員の数は" + 3 + "人です"); System.out.println("1 + 2 = " + (1 + 2)); } } -
保存して実行します。
コンソールHello, Java! 社員管理アプリ 社員の数は3人です 1 + 2 = 3
最後の行の (1 + 2) は、( ) で囲んだので、先に数の足し算が行われて 3 になり、その後で文字列につながります。( ) を付けずに "1 + 2 = " + 1 + 2 と書くと、左から順に文字列につながって 1 + 2 = 12 と表示されます。数の計算は第4章で詳しく学びます。
【知識メモ】System.out.println の読み方
System.out.println は、「System クラスの out(標準の出力先。Eclipse ではコンソール)の println メソッド」という意味です。.(ドット)は、「〜の」と読みます。メソッドは第7章で学びます。今は、この形をそのまま覚えてください。
3.6 コメント
コメント は、プログラムの中に書くメモです。コンパイルのときに無視されるので、プログラムの動きには影響しません。Java のコメントには、3つの書き方があります。
| 書き方 | 範囲 | 使いどころ |
|---|---|---|
// … |
// から行末まで |
1行のメモ。文の上や、文の後ろに書く |
/* … */ |
/* から */ まで(複数行もよい) |
数行にわたるメモ。コードを一時的に無効にするときにも使う |
/** … */ |
/** から */ まで |
Javadoc コメント。クラスやメソッドの説明。第7章で書き方を学ぶ |
-
Basic.javaにコメントを書き足します。ch03/Basic.javapackage ch03; /** プログラムの基本の形を確かめる練習用のクラス */ public class Basic { public static void main(String[] args) { // 文字列をそのまま表示する System.out.println("Hello, Java!"); System.out.println("社員管理アプリ"); // 文字列と数を + でつなぐ System.out.println("社員の数は" + 3 + "人です"); System.out.println("1 + 2 = " + (1 + 2)); /* System.out.println("この行は実行されない"); */ } } -
保存して実行します。表示は前と変わりません。コメントの中の
printlnは実行されていません。コンソールHello, Java! 社員管理アプリ 社員の数は3人です 1 + 2 = 3
【便利な使い方】コメントには「何のために」を書く
何をしているかはコードを読めば分かるので、コメントには「どんな時に」「何のために」行う処理なのかを書くようにしましょう。たとえば // 3 を表示する ではなく // 社員の数を表示する と書きます。Spring入門のコードも、この考え方で書かれています。
Eclipse では、行を選んで Ctrl + / キーを押すと、その行の先頭に // が付きます。もう一度押すと外れます。
3.7 読みやすく、楽に書く
空白とインデント
Java では、文の途中の空白や改行は自由です。System.out.println("Hello, Java!"); を2行に分けて書いても動きます。ただし、読みやすさのために、1つの文は1行に書き、ブロックの中の行は インデント(行の先頭の空白で右にずらすこと)で1段下げるのが決まりです。
この教材のコードは、半角スペース4つでインデントしています。Eclipse のエディターでは、Enter キーで改行すると、次の行のインデントが自動で付きます。Tab キーを押すとタブという文字が入りますが、表示も動きも変わりません。
【便利な使い方】フォーマットでインデントを整える
エディターの中をクリックしてから、Ctrl キーと Shift キーを押しながら F キーを押すと、ファイル全体のインデントや空白が自動で整えられます(フォーマット)。既定の設定ではタブでインデントするので、教材のコードとは見た目が少し変わりますが、動きは同じです。メニューの ソース → フォーマット からも実行できます。
補完で入力する
Eclipse には、名前の一部を入力して Ctrl + Space キーを押すと、続きの候補を表示してくれる 補完 の機能があります。打ち間違いが減り、入力も速くなるので、この教材では補完を使って入力することをおすすめします。
| 入力して Ctrl + Space | 入るもの |
|---|---|
sysout |
System.out.println();(カーソルは ( ) の間に置かれる) |
main |
public static void main(String[] args) { } |
Emp など、自分で作ったクラス名の先頭 |
Employee などの候補(第8章から)。↑ ↓ キーで選んで Enter キー |
Arr など、Java に用意されたクラス名の先頭 |
ArrayList などの候補(第11章から)。import の行も自動で書き足される |
変数名のあとに .(例:e1.) |
name、print() など、その変数で使えるフィールドやメソッドの候補(第8章から) |

図3-2 sys と入力して Ctrl + Space(赤枠の sysout を選ぶ)
候補が1つしかないときは、Ctrl + Space を押すだけで入ります。第9章からは、import という行が必要になるクラスも使います。補完で入力すると、import の行も自動で書き足されます。
同じ名前のクラスがいくつも候補に出たときは、右に表示されるパッケージ名を確かめて選びます。たとえば、第11章で使う Date は java.util.Date を選びます。
【ご注意】Javaの自動有効化トリガー
最近の開発環境(IDE)では、補完のキーを押さなくても、入力の途中で候補が自動で表示されるものが多くあります。Eclipse でも同じように使うための方法として、設定の ウィンドウ → 設定 → Java → エディター → コンテンツ・アシスト にある「Java の自動有効化トリガー」に .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ を入れる、という紹介を見かけることがあります。
この設定はしないでください。Eclipse は、文字を1つ入力するたびに候補を出す使い方を想定していないため、候補の一覧が入力の邪魔になります。実際に、この設定を試した人の多くが、最終的に元に戻しています。
Eclipse では、既定の設定のまま、. を入力したときに自動で表示される候補と、Ctrl + Space キーで出す候補を使ってください。
Eclipse でよく使うショートカットは、付録B「Eclipse 操作早見表」 にまとめています。
大文字と小文字、全角と半角
Java は大文字と小文字を区別します。System を system と書くとエラーになります。また、"・;・(・空白などの記号は、すべて 半角 で入力します。全角の記号や空白が混ざると、見た目では分かりにくいエラーになります。文字列の中(" と " の間)とコメントの中だけは、全角の文字を自由に書けます。
3.8 うまくいかないときは
| 症状 | 考えられる原因と対処 |
|---|---|
| 行の左に赤い「×」が付いて、「構文エラーがあります。";" を挿入して…」と表示される | 文の終わりの ; が無いか、全角になっています。半角の ; を付けてください。 |
| 「構文エラーがあります。"}" を挿入して…」と表示される | ブロックを閉じる } が足りません。{ と } の数を合わせてください。 |
| 「system を解決できません」 |
System の S が小文字です。大文字に直してください。 |
| 「文字列リテラルがダブル・クォートによって正しく閉じられていません」 |
" が片方しかないか、全角の ” になっています。半角の " で囲んでください。 |
| 実行しようとすると「選択にはメイン型が含まれていません」と表示される |
main の行の形が変わっています。public static void main(String[] args) と、1文字も違わずに書いてください。 |
| 実行しても前の結果のまま変わらない | 保存していません。タブの「●」が消えているかを確認してください。 |
ほかのコンパイルエラーは、付録A「よくあるコンパイルエラー」 も参考にしてください。
3.9 まとめと確認問題
まとめ
- Java のプログラムは、クラス の中の main メソッド に書く。実行すると、
mainメソッドの中の文が上から順に実行される - 1つの処理を 文 といい、終わりに
;を付ける。{}で囲んだ範囲を ブロック という -
System.out.println(…)は表示して改行する。System.out.print(…)は改行しない -
"…"で囲んだものは 文字列。文字列は+でつなげられる。数も+でつなぐと文字列になる - コメントは
//、/* */、/** */(Javadoc)の3つ。何のための処理かを書く - Java は大文字と小文字を区別する。記号は半角で書く。補完(Ctrl + Space)を使うと打ち間違いが減る
この章で使った書き方は、付録B「文法早見表」の「プログラムの形」 にまとめています。
確認問題
問1 プログラムを実行したとき、最初に実行されるのはどのメソッドですか。
解答を見る
main メソッド(public static void main(String[] args))です。
問2 次の2行を実行すると、コンソールにはどのように表示されますか。System.out.print("営業部");System.out.println("総務部");
解答を見る
営業部総務部 と1行に表示されます。print は改行しないためです。
問3 System.out.println("合計は" + 10 + 20); を実行すると、何と表示されますか。
解答を見る
合計は1020 と表示されます。左から順に文字列につながるためです。30 と表示したいときは、"合計は" + (10 + 20) のように ( ) で囲みます。
問4 sysout と入力した後に押すキーと、その結果を答えてください。
解答を見る
Ctrl + Space を押すと、System.out.println(); が入ります。
問5 次のコードの間違いを2つ見つけてください。system.out.println("Hello")
解答を見る
system の s が小文字(正しくは System)であることと、文の終わりの ; が無いことです。
