プログラム|Java入門
最初のプログラム:画面に文字を出す
前回は、書いたものがどこで動くのかを見ました。 javac がクラスファイルを作り、それを JVM が読んで動かす、という2段構えでした。
今回は手を動かします。 5行のプログラムを、1行ずつ意味を付けながら組み立てます。 たった5行ですが、この先はこの形の上に載ります。

図1:書く・翻訳する・動かす。この3つで画面に文字が出ます。
載せた画面の文字は、日本語の Windows 11 と Java 21 で出たものです。 英語の環境では英語の文が出ます。
まず結論:この章の用語
| 用語 | 意味 |
|---|---|
| エディタ | 文字だけのファイルを書く道具。Windows のメモ帳でも足りる |
| コマンドプロンプト | コマンドを打つ黒い画面。前回と同じもの。macOS と Linux ではターミナルと呼ぶ |
| cd | いま見ているフォルダを移るコマンド。うしろに移りたいフォルダを書く |
| PATH | 道具を名前だけで呼べるように、Windows が探しに行くフォルダの一覧 |
| 文字コード | 文字を数字に置き替えて保存するやり方。書いた側と読む側で同じものを使わないと壊れる。UTF-8 と Shift_JIS はその種類 |
| UTF-8 | いまいちばん使われている文字コード。Java はこれを前提にしている |
| コンパイル | 人が書いた文を機械寄りの形へ翻訳すること。この記事では「翻訳」とも書く |
| クラス | プログラムをひとまとまりに入れる箱。いまは箱と思ってかまわない。本当の意味は先の回で扱う |
| クラスファイル | コンパイルして出来上がる、JVMが読む形のファイル。拡張子は .class |
| メソッド | 処理のまとまりに付けた名前。main も println もメソッドで、自分で作る話は先の回で扱う |
| main | プログラムが動き出す場所の名前。JVMはこの名前を探しに行く |
| 命令 | 1つの動きを書いた1文。前回「JVMへの指示」と呼んだものを、書く側から見た言い方 |
| 二重引用符 | ” のこと。画面に出したい文をこれではさむ |
| 丸括弧 | ( と ) のこと。命令に渡すものをこの中に書く |
| 波括弧 | { と } のこと。ここからここまでがひとまとまり、を表す |
| セミコロン | ; のこと。1つの命令のうしろに1つ置いて、終わりを示す |
| 字下げ | 行の頭を空けて、内側にあることを目で分かるようにする書き方 |
| javac | コンパイルするコマンド。うしろにファイル名を渡す |
| java | コンパイルしたものを動かすコマンド。うしろにクラス名を渡す |
この章のゴール
自分の手で1本書いて、画面に文字を出すことです。 そのうえで、止まったときに見る場所を4つ持って帰ります。
1. 打つ場所と道具をそろえる

図2:使う道具は2つ。文字を書くエディタと、コマンドを打つ黒い画面です。
道具は2つです。 文字だけのファイルを書くエディタと、コマンドを打つ黒い画面(コマンドプロンプト)。 エディタはメモ帳でも足ります。
前回を読んでいない人へ。 JDK 21 を入れると javac と java が使えます。 作業用のフォルダを1つ作り、そのアドレス欄に cmd と打つと、そこで黒い画面が開きます。 ほかの場所で開いたときは cd で移ります。
> cd C:\java
保存で気を付けるのは2つ。 名前のうしろが .java で終わること。 メモ帳は種類を「すべてのファイル」に変えないと .txt が付きます。 もう1つが文字コードで、選ぶ欄があれば UTF-8 にします。 Java 21 の javac は、中身を UTF-8 として読みます。
道具がそろったかは、2つ打って版を見ます。 java -version は3行出るので1行目だけです。
> javac -version javac 21.0.12 > java -version openjdk version "21.0.12" 2026-07-21 LTS
両方とも 21 なら進めます。 片方が古いとき、見つからないと言われたときは、PATH の並びが原因です。 直し方は前回の6章です。
2. 画面に文字を出すプログラム、全文

図3:この5行で1本。どの行が何をしているのかを見ます。
最初のプログラムはこれで全部です。 エディタに打って、Hello.java という名前で保存してください。 public を付けた class の名前とファイル名はそろえます。
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
意味はまだ分からなくて大丈夫です。 何かをしているのは3行目だけで、ほかの4行はその枠です。
打ち写すときは大文字と小文字に気を付けてください。 Java では別の名前になります。
3. 打ってみる:javac と java

図4:javac はフォルダにファイルを1つ増やし、java は画面に文字を出します。
保存しただけでは動きません。 Hello.java を置いたフォルダで2つ打ちます。 行の頭の > は黒い画面が出すもので、打つ文字ではありません。
> javac Hello.java > java Hello Hello, Java!
1つ目は何も言わずに終わります。 これが正しい動きで、静かなのはうまくいった合図です。 そのかわりフォルダに Hello.class が増えています。
3行目が、プログラムの出した文字です。 java に渡すのはクラス名なので、.class は付けません。 Java 11 以降なら javac を省いて java Hello.java とも打てますが、ここでは分けます。
4. class:プログラムを入れる箱

図5:波括弧は入れ子。開いた数と閉じた数を数えて確かめます。
1行目の class が、箱の始まりです。 うしろの Hello がその名前で、自分で決められます。
箱の範囲を決めているのが波括弧です。 1行目の { と5行目の } が class、2行目の { と4行目の } が main の分で、箱の中に箱が入っています。 開いた数と閉じた数はそろいます。
行の頭の空きが字下げです。 内側へ入るたびに半角4つぶん下げると、いまどの箱の中かが目で分かります。 読みやすさのためなので、タブで下げても動きます。 通らないのは全角スペースで、これがいちばん多いつまずきです。 見た目が空白の文字はほかにもあり、写したときに混ざります。
5. main:ここから動き出す場所

図6:JVMは main という名前を探して、そこから動き出します。
2行目の main が入口です。 java を打つと JVM がこの名前を探して、そこから動かします。 この名前は変えられません。
同じ行の public static void と String[] args は、いまは形として置きます。 意味は先の回です。
やっかいなのは、間違えてもコンパイルは通ることです。 Main でも文として正しいので javac は黙り、止まるのは動かすときです。
エラー: メイン・メソッドがクラスHelloで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args)
このあとにもう1行続きますが、読み飛ばして大丈夫です。 探している形が2行目にあるので、自分の2行目と見比べるのが早道です。
6. System.out.println:1行を書き出す

図7:1つの命令を部分に切ると、それぞれの役目が見えます。
3行目が、画面へ文字を出している1行です。 長く見えますが、短いものをドットでつないだ並びです。 ドットは「の」と読みます。
System は Java が用意している機械の窓口、out はその画面への出口、println が1行ぶん書き出すはたらきに付いた名前です。 こういう名前をメソッドといい、main も同じです。
7. 丸括弧の中:出したいものを書く

図8:丸括弧の中に、二重引用符ではさんで書きます。
画面に出したいものは丸括弧の中に書きます。 文字を出すときは二重引用符ではさみます。 はさんだ中は、空白も記号もそのまま出ます。 引用符そのものは出ません。
はさみ忘れると止まります。 3行目の引用符を2つとも消すと、こう出ました。
Hello.java:3: エラー: ')'または','がありません
System.out.println(Hello, Java!);
^
エラー1個
引用符が無いと、中身が文字ではなく名前や記号として読まれます。 ここでは ! のところで形が崩れました。
丸括弧の中は空にもできます。 何も書かずに、改行だけをします。 次の節で使います。
8. print と println:改行するかしないか

図9:画面のます目で見ると、どの命令がどこへ書いたか分かります。
println のうしろの ln は改行の印です。 書き出したあとに改行まで済ませるので、次の文字は下の行の左端から始まります。 print は改行しません。
2本目を Aisatsu.java という名前で書きます。 日本語を入れるので、保存は UTF-8 のままに。
public class Aisatsu {
public static void main(String[] args) {
System.out.println("おはよう");
System.out.print("こんにちは");
System.out.print("こんばんは");
System.out.println();
System.out.println("おやすみ");
}
}
同じように2つ打つと、こうなります。
> javac Aisatsu.java > java Aisatsu おはよう こんにちはこんばんは おやすみ
命令は5つなのに画面は3行です。 print で書いた2つが1行に並んだからです。 6行目の println() は丸括弧の中が空なので、改行だけをします。
9. 並べ替えて、画面の形を変えてみる

図10:命令の並べ方を変えると、画面の行数が変わります。
画面の形は命令の並べ方で決まります。 Aisatsu.java を2通りに書き替えます。 直したら javac から打ち直します。
1つ目は print を全部 println に替えるやり方で、画面は5行になります。 中が空の println() も1行ぶん数えます。 2つ目は6行目の println() を消すやり方で、改行が減るので画面は2行になります。 確かめたら元の形へ戻します。
10. つまずくのはこの4つ

図11:見た目がほとんど同じなので、数を数えて見つけます。
はじめに引っかかるのはこの4つです。 見た目がほとんど同じなので、文字を読むより数を数えるほうが早く見つかります。 わざと4つ出して、1行目だけ並べました。
Aisatsu.java:6: エラー: ';'がありません Hello.java:3: エラー: シンボルを見つけられません Hello.java:3: エラー: '\u3000'は不正な文字です Aisatsu.java:3: エラー: この文字(0x82)は、エンコーディングUTF-8にマップできません
1つ目はセミコロンの付け忘れで、Aisatsu.java の6行目から1つ消しました。 行末に ; を足せば通ります。
2つ目は大文字と小文字の取り違えで、println を Println と書きました。 シンボルは名前のことで、その名前は下の行に出ます。
3つ目が全角スペースです。 日本語入力のまま行の頭を空けると入ります。 3行目の字下げを全角スペース4つに置き替えると、1つにつき1つ数えて4個出ました。 ‘\u3000’ が全角スペースの番号です。
4つ目が保存した文字コードです。 日本語を入れたのに Shift_JIS で保存すると、読む前に止まります。 メッセージの「エンコーディング」は文字コードのこと。 読めなかったところの数だけ並び、日本語18文字で21個出ました。 番号は文字ごとに変わり、21行は同じ文ではありません。 UTF-8 で保存し直せば通ります。
4つとも、止まるのはコンパイルのところです。 1行目にファイル名と行番号があるので、そこを見ます。 読み方は次回です。
確認問題
問1 ファイルに public class Aisatsu と書いた。 ファイル名として適切なものはどれか。
ア Aisatsu イ Aisatsu.java ウ Aisatsu.class エ aisatsu.java
答え:イ
public を付けた class の名前とそろえます。 アは .java が抜け、ウは javac が作るほう、エは小文字です。
問2 main の中に System.out.println( ? ); と書く。 ? のところに入れて、画面に Hello と出るのはどれか。
ア Hello イ “Hello” ウ ‘Hello’ エ “Hello
答え:イ
文字を出すときは二重引用符ではさみます。 アは名前として読まれて止まります。 ウの一重引用符は文字1つを表す書き方、エは閉じ忘れ。
問3 main の中に次の3行を書いた。 画面は何行になるか。
System.out.print(“あ”);
System.out.println(“い”);
System.out.print(“う”);
ア 1行 イ 2行 ウ 3行 エ 0行
答え:イ
1行目の print は改行しないので、あ と い が同じ行に並びます。 2行目の println が改行するので、う は次の行です。
まとめ

図12:書く・翻訳する・動かすを、合うまで往復します。
要るものがそろいました。 class という箱、その中の main、画面に出す println、行末のセミコロン、javac と java です。
この先は書く・翻訳する・動かすを往復します。 止まっても、思った文字と違っても、書くところへ戻る。 一度で通らないのがふつうです。
止まったときに見る場所は4つ。 行末のセミコロン。 大文字と小文字。 全角スペース。 保存した文字コード。
次回は「エラーの読み方:赤い字のどこを見るか」。 今回わざと出した文を材料に、どこから読めば直せるのかを固めます。

