Javaの代入演算子の入門ガイド
はじめての人向けに、Javaの「代入演算子」を丁寧に説明します。代入は「値を変数に入れる」ための超基本。ここを押さえると、コードが一気に読みやすくなります。
代入演算子の基本
- 考え方: 代入演算子
=は「右の値を左の変数に入れる」記号です。 - 読み方のコツ: 「左に右を代入」ではなく「左に右を入れる」と覚えると混乱しにくいです。
- よくある誤解: 数学の「等しい」ではありません。プログラミングでは「入れる(セットする)」です。
int a; // aという箱(変数)を用意
a = 10; // aに10を入れる
int b = a; // bにaの中身(10)を入れる
Java- ポイント: 代入は「右を先に計算してから、左へ入れる」流れです。
計算と代入をまとめる「複合代入演算子」
計算してから代入する、というよくある操作を短く書けます。
- 加算代入:
a += b;
上と同じ意味はa = a + b;
int a = 5;
a += 3; // a = a + 3 と同じ。aは8になる
Java- 減算代入:
a -= b;
同じ意味はa = a - b;
int hp = 100;
hp -= 30; // hpは70になる
Java- 乗算代入:
a *= b;
同じ意味はa = a * b;
int score = 10;
score *= 2; // scoreは20になる
Java- 除算代入:
a /= b;
同じ意味はa = a / b;
int apples = 10;
apples /= 3; // applesは3(整数の割り算は小数点以下切り捨て)
Java- 剰余代入(余り):
a %= b;
同じ意味はa = a % b;
int day = 10;
day %= 7; // 10を7で割った余りは3。dayは3になる
Java- 使いどころ: カウンターの更新、体力の増減、合計やスコアの計算などでコードがスッキリします。
代入の順番と「右結合」
複数の代入を一行に書くことができます。代入は「右から左」に評価されます(右結合)。
int a, b, c;
a = b = c = 10;
// 流れ:cに10 → bにc(10) → aにb(10)
// 結果:a, b, c はすべて10
Java- ポイント: まず右端が決まって、それが左へ順に渡っていきます。
- 注意: 読みづらいと感じるなら、初心者のうちは1つずつ代入したほうが安全です。
よくあるつまずきと回避法
- 整数と小数の割り算:
整数型で割ると小数点以下が切り捨てられます。小数が欲しいときは型をdoubleにするか、どちらかを小数にします。int x = 5, y = 2; double z = (double) x / y; // 2.5 を得られる - 型の不一致:
代入先の型と右の値の型が合わないとエラーになります。必要ならキャストか型を合わせましょう。double d = 3.14; int i = (int) d; // 3(小数部分は切り捨て) - 代入と比較の混同:
=は代入、==は比較。条件式では==を使います。int n = 10; if (n == 10) { /* これは比較(true) */ } // if (n = 10) は代入になり、エラーや意図しない挙動の原因 - 順序に注意:
右側の式が先に計算されてから左に入るので、同じ変数を使う複合代入では結果の変化に注意。int a = 3, b = 4; a += b * 2; // まず b*2=8 を計算 → a=a+8=11
例題と丁寧な解説
例題1:スコアの更新
- 課題: 初期スコア
score = 50に、アイテムで +15、ペナルティで -20、最後にボーナスで2倍にする。 - 解答例:
int score = 50;
score += 15; // 65
score -= 20; // 45
score *= 2; // 90
Java- 結果: 90
- 学び: 複合代入で「更新の流れ」が読みやすい。
例題2:時間の変換(余り)
- 課題: 185分は「何時間と何分」? 余りを使って表そう。
- 解答例:
int total = 185;
int hours = total / 60; // 3時間
int mins = total % 60; // 5分
Java- 結果: 3時間5分
- 学び:
/は商、%は余り。時間や日付計算で超便利。
例題3:複数代入の確認
- 課題:
a = b = c = 7;のあとにb += 3;を実行。a, b, cはどうなる? - 解答例:
int a, b, c;
a = b = c = 7; // すべて7
b += 3; // bだけ10になる
Java- 結果: a=7, b=10, c=7
- 学び: 複数代入はその瞬間の値をコピーする。以後はそれぞれ独立。
例題4:整数と小数の差
- 課題:
int a = 10; a /= 4;とdouble b = 10; b /= 4;の違いは? - 解答例:
int a = 10;
a /= 4; // 2(整数は小数切り捨て)
double b = 10;
b /= 4; // 2.5(小数で割り算)
Java- 結果: aは2、bは2.5
- 学び: 欲しい結果に合わせて型を選ぶ。
手を動かす練習問題
- 練習1: 財布に1000円。コーヒーで-180円、交通費で-250円、クーポンで+100円。最終残高を求めて。
- 練習2: 1週間は7日。20日後の「曜日番号(0〜6)」を、
start = 2(例えば火曜=2)から計算して。 - 練習3: 変数
x = 3に対して、x *= 4; x -= 5; x %= 3;の最終値は? - 練習4:
double d = 5; int n;に、d / 2の結果をnに代入して、違いを説明して。
