第1章 変数宣言 値に名前をつける
変数は、値に名前をつけて覚えておくためのしくみです。
age というシールを貼って、その中に 20 を入れておけば、あとから「ageの箱を見て」と言うだけで20を取り出せます。変数が必要なのは、値に意味を持たせるためです。500 だけでは何の数字かわかりませんが、price という名前がつくと「これは価格なんだ」と読み取れます。
int age = 20; // 年齢を入れる
String name = "田中"; // 名前を入れる
double price = 980.5; // 小数を含む金額を入れる
boolean isStudent = true; // 学生かどうかを入れる
| 型 | 入る値 | 例 |
|---|---|---|
int | 整数 | 10, -3 |
double | 小数 | 3.14 |
String | 文字列 | "こんにちは" |
char | 1文字 | 'A' |
boolean | 真偽値 | true, false |
第2章 演算子 計算や比較をする
演算子は、値を計算したり、比べたり、条件を組み合わせたりするための記号です。文章で言えば「助詞」や「接続詞」に近い存在です。
price + tax は「価格と税を足す」、score >= 80 は「点数が80以上か」、isMember && hasCoupon は「会員かつクーポンを持っているか」と読めます。算数の授業で 3 + 2 と書くと「3に2を足す」とわかります。Javaでも同じです。ただしJavaでは、計算だけでなく「同じか」「大きいか」「両方当てはまるか」の判断にも記号を使います。
演算子が必要なのは、値と値の関係を作るためです。変数に値を入れただけでは、合計も判断もできません。演算子を使うことで、「足す」「比べる」「両方満たす」といった考えをコードにできます。
算術演算子
数値の計算に使います。
| 演算子 | 意味 | コード例 | 結果 | よく使う場面 |
|---|---|---|---|---|
+ | 足し算 | 500 + 100 | 600 | 合計金額、文字列連結 |
- | 引き算 | 1000 - 300 | 700 | 残金、差額 |
* | 掛け算 | 120 * 3 | 360 | 単価×個数 |
/ | 割り算 | 10 / 2 | 5 | 平均、1人あたり |
% | 割った余り | 7 % 3 | 1 | 偶数・奇数判定 |
int price = 500; // 商品の値段を入れる
int count = 3; // 商品の個数を入れる
int total = price * count; // 値段と個数を掛けて合計金額を作る
System.out.println(total); // 1500と表示する
/ で割ると、結果も整数として扱われます。たとえば 5 / 2 は 2.5 ではなく 2 になります。小数まで使いたいときは 5.0 / 2 のように double を含めます。代入演算子
| 演算子 | 意味 | コード例 | 同じ意味 | よく使う場面 |
|---|---|---|---|---|
= | 右の値を左に入れる | age = 20 | なし | 値の初期設定 |
+= | 足してから入れる | money += 100 | money = money + 100 | 合計、貯金 |
-= | 引いてから入れる | stock -= 1 | stock = stock - 1 | 在庫を減らす |
*= | 掛けてから入れる | point *= 2 | point = point * 2 | 倍率計算 |
/= | 割ってから入れる | price /= 2 | price = price / 2 | 半額、平均化 |
%= | 余りを入れる | number %= 10 | number = number % 10 | 末尾の数字 |
比較演算子
| 演算子 | 意味 | コード例 | よく使う場面 |
|---|---|---|---|
== | 等しい | age == 20 | 番号や状態の一致確認 |
!= | 等しくない | menu != 0 | 終了番号以外なら続ける |
> | より大きい | score > 80 | 基準を超えたか |
< | より小さい | stock < 5 | 在庫が少ないか |
>= | 以上 | score >= 80 | 合格点に届いたか |
<= | 以下 | age <= 12 | 子ども料金の対象か |
== ではなく equals() を使います。文字の内容を比べたいときは、name.equals("田中") のように読みます。論理演算子
| 演算子 | 意味 | コード例 | よく使う場面 |
|---|---|---|---|
&& | かつ | age >= 18 && hasTicket | 成人かつチケットあり |
|| | または | isMember || hasCoupon | 会員またはクーポンあり |
! | ではない | !isClosed | 閉店していないか |
= は代入、== は比較です。演算子は「計算する」「入れる」「比べる」「条件を組み合わせる」に分けると理解しやすくなります。第3章 条件分岐 道を選ぶ
条件分岐は、プログラムに「今の状況を見て、進む道を選ばせる」ための構文です。信号が青なら進む、赤なら止まる。雨なら傘を持つ。人間が毎日している判断を、Javaではコードとして書きます。
条件分岐が必要なのは、プログラムを状況に合わせて動かすためです。条件分岐がなければ、晴れの日も雨の日も同じ行動、合格点でも不合格点でも同じ表示になってしまいます。
if もし〜なら
先生が「今日は暑いから水分補給しよう」と言う場面に似ています。暑いときだけ声をかけ、暑くなければ何もしません。
int temperature = 32; // 気温を入れる
if (temperature >= 30) { // 気温が30度以上か調べる
System.out.println("水分補給をしましょう"); // 暑いときだけ表示する
}
if else 2つの道から選ぶ
ゲームで「右の道に行くか、左の道に行くか」を選ぶように、条件が正しいときと正しくないときで処理を分けます。
int score = 85; // テストの点数を変数に入れる
if (score >= 80) { // scoreが80以上かどうかを調べる
System.out.println("合格です"); // 条件がtrueなら合格と表示する
} else {
System.out.println("再挑戦です"); // 条件がfalseなら再挑戦と表示する
}
else if 3つ以上の道から選ぶ
点数によって先生の声かけが変わるように、上から順番に条件を見て、最初に当てはまった道へ進みます。
int score = 72; // テストの点数を入れる
if (score >= 90) { // 90点以上か調べる
System.out.println("とても良い");
} else if (score >= 70) { // 90点未満で、70点以上か調べる
System.out.println("良い");
} else if (score >= 50) { // 70点未満で、50点以上か調べる
System.out.println("もう少し");
} else { // どの条件にも当てはまらない場合
System.out.println("復習しよう");
}
switch case 決まった選択肢から選ぶ
給食のメニュー表やゲームのコマンド選択をイメージしてください。1番ならカレー、2番ならパスタ、というように決まった値で道を選びます。
int menu = 2; // 選ばれたメニュー番号を入れる
switch (menu) { // menuの値によって処理を分ける
case 1: // menuが1の場合
System.out.println("カレー");
break; // ここでswitchを抜ける
case 2: // menuが2の場合
System.out.println("パスタ");
break; // ここでswitchを抜ける
default: // どのcaseにも当てはまらない場合
System.out.println("メニューがありません");
}
第4章 繰り返し 同じ作業を自動化する
繰り返しは、同じ処理を何度も書かずに済ませるための構文です。学校で「漢字を10回書く」宿題のように、同じ作業をまとめてお願いできます。回数が決まっているなら for、条件が続く間なら while、最低1回は実行したいなら do while が向いています。
繰り返しが必要なのは、同じ作業をまとめて扱うためです。100人分の点数を表示するときに100行書くのではなく、「順番に全員分を見る」と考えると、コードも考え方も整理されます。
for 回数が決まっている繰り返し
for は、「何回目から始めるか」「いつまで続けるか」「1回終わるたびに何を変えるか」の3つを見ると読みやすくなります。
for (int i = 1; i <= 5; i++) { // iを1から始め、5以下の間だけ繰り返し、毎回1増やす
System.out.println(i + "回目のこんにちは"); // 今が何回目かを表示する
}
| 部品 | コード | 役割 | 日本語にすると |
|---|---|---|---|
| 初期化 | int i = 1 | 数え始め | 1回目から始める |
| 条件 | i <= 5 | 続けるか | iが5以下なら続ける |
| 更新 | i++ | 1周ごとに変更 | 終わるたびに1増やす |
while 条件が続く間くり返す
while は、「まだ条件を満たしていないなら続ける」という考え方です。終わるタイミングが状況によって変わる場面に向いています。
int money = 0; // 現在の貯金額を0円にする
while (money < 1000) { // 貯金が1000円未満の間くり返す
money += 200; // 200円ずつ貯金する
System.out.println("現在の貯金: " + money + "円"); // 現在額を表示する
}
true のままだと、無限ループになります。条件の中で使っている変数が、ループ内で変化しているか確認しましょう。do while 最低1回は実行する
do while は、「まず一度やってみて、そのあと続けるか考える」形です。最初の1回を必ず実行したい処理で使います。
int count = 0; // 実行回数を数える変数
do {
count++; // countを1増やす
System.out.println(count + "回実行しました"); // 実行回数を表示する
} while (count < 3); // countが3未満ならもう一度実行する
拡張for 配列やリストを順番に読む
int[] scores = {80, 95, 70}; // 3人分の点数を配列に入れる
for (int score : scores) { // scoresから1つずつscoreに取り出す
System.out.println(score); // 取り出した点数を表示する
}
第5章 配列 たくさんの値をまとめる
配列は、同じ種類の値を並べて管理するために使います。
配列が必要なのは、たくさんの値をひとまとまりとして扱うためです。点数が100個あるときに変数を100個作るより、scores という棚にまとめるほうが、順番に処理しやすくなります。
int[] scores = {80, 95, 70}; // 3人分の点数をまとめて入れる
System.out.println(scores[0]); // 0番目の80を表示する
System.out.println(scores[1]); // 1番目の95を表示する
System.out.println(scores[2]); // 2番目の70を表示する
| 番号 | 0 | 1 | 2 |
|---|---|---|---|
| 値 | 80 | 95 | 70 |
第6章 メソッド 処理に名前をつける
メソッドは、処理のまとまりに名前をつけるしくみです。「机を片付ける」という一言の中に、本をしまう、消しゴムを置く、ノートを重ねる、という細かい作業が入っているイメージです。
メソッドが必要なのは、長い処理を意味のあるまとまりに分けるためです。名前があると、細かい中身を見る前に「ここでは何をしたいのか」がわかります。
public static int add(int a, int b) { // aとbを受け取るメソッド
return a + b; // aとbを足した結果を返す
}
int result = add(3, 5); // addに3と5を渡し、結果をresultに入れる
System.out.println(result); // 8と表示する
第7章 クラスとオブジェクト
クラスは設計図、オブジェクトはその設計図から作られた実物です。たい焼きの型がクラスで、実際に焼けたあんこ味やクリーム味のたい焼きがオブジェクトです。
クラスが必要なのは、関係している情報と処理をひとまとまりにするためです。「学生」の名前、点数、自己紹介する処理を一緒にしておくと、大きなプログラムでも整理しやすくなります。
class Student { // Studentという設計図を作る
String name; // 学生の名前を持つ
int score; // 学生の点数を持つ
void introduce() { // 自己紹介する処理を作る
System.out.println(name + "です。点数は" + score + "点です。");
}
}
第8章 標準入力 キーボードから受け取る
標準入力は、プログラムに「質問箱」を置くようなものです。プログラムが質問し、人間がキーボードで答えると、その答えを変数に入れて使えます。
標準入力が必要なのは、プログラムの外から変わる値を受け取るためです。名前や点数をその場で入力できると、毎回同じ結果ではなく、入力に応じた結果を返せます。
import java.util.Scanner; // Scannerを使えるようにする
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // キーボード入力を読む準備をする
System.out.print("名前を入力してください: "); // 入力してほしい内容を表示する
String name = scanner.nextLine(); // 入力された1行をnameに入れる
System.out.println(name + "さん、こんにちは"); // 入力された名前を使って表示する
scanner.close(); // Scannerを閉じる
}
}
第9章 ArrayList 増減できる箱
ArrayList は、紙をあとから足せるバインダーのようなものです。配列は最初に棚の数が決まっているロッカーですが、ArrayList はあとから要素を追加できます。
ArrayList が必要なのは、数があとから変わるデータを扱うためです。買い物かごの商品や名前の一覧のように、増えたり減ったりするものに向いています。
import java.util.ArrayList; // ArrayListを使えるようにする
ArrayList<String> names = new ArrayList<>(); // 文字列を入れるリストを作る
names.add("田中"); // リストに田中を追加する
names.add("佐藤"); // リストに佐藤を追加する
names.add("鈴木"); // リストに鈴木を追加する
System.out.println(names.get(0)); // 0番目の田中を表示する
System.out.println(names.size()); // リストの件数を表示する
| 種類 | サイズ | 向いている場面 |
|---|---|---|
| 配列 | 最初に決める | 人数や件数が固定 |
| ArrayList | あとから増減できる | 入力数が変わる |
第10章 例外処理 失敗に備える
例外処理は、遠足の「雨の日プラン」に似ています。晴れなら公園、雨なら体育館。失敗が起きても、プログラムが急に止まらないように別の行動を用意します。
例外処理が必要なのは、予定どおりにいかなかったときの動きを決めるためです。数字を入力してほしいところに文字が入ったときも、わかりやすい案内を出して次の行動につなげられます。
try { // 失敗するかもしれない処理を試す
int number = Integer.parseInt("abc"); // 文字列を数字に変換しようとする
System.out.println(number); // 変換できた場合だけ表示する
} catch (NumberFormatException e) { // 数字に変換できなかった失敗を受け止める
System.out.println("数字に変換できませんでした"); // エラー時の案内を表示する
}
第11章 構文が組み合わさるとどう見えるか
ここまでの構文が組み合わさると、ひとつの流れを持つコードになります。下の例では、入力を受け取り、変数に入れ、条件分岐で表示する内容を変えています。
import java.util.Scanner; // Scannerを使えるようにする
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // キーボード入力を読む準備をする
System.out.print("点数を入力してください: "); // 入力を促す文章を表示する
int score = scanner.nextInt(); // 入力された整数をscoreに入れる
if (score >= 80) { // scoreが80以上か調べる
System.out.println("合格です"); // trueなら合格と表示する
} else {
System.out.println("再挑戦です"); // falseなら再挑戦と表示する
}
scanner.close(); // Scannerを閉じる
}
}
このプログラムでは、変数宣言、標準入力、条件分岐、比較演算子、画面表示を使っています。