Java | 代入演算子

Java Java
スポンサーリンク

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 に代入して、違いを説明して。
タイトルとURLをコピーしました