Javaの変数の初期化と代入の基本を、初心者向けに
プログラミングを始めると「変数」「初期化」「代入」という言葉がよく出てきます。ここでは、かみ砕いた説明と動くサンプル、よくある失敗例まで一気に整理します。
変数ってなに?
- イメージ: 変数は「値をしまっておく箱」。
- 役割: 箱には「型」(整数、文字、少数など)が決まっていて、その型に合った値だけが入る。
- 宣言のしかた: 「型 変数名;」で箱を用意する。
int age; // 年齢を入れる整数の箱
String name; // 名前を入れる文字列の箱
double price; // 値段を入れる少数の箱
Java代入ってなに?「=」の正体
- ポイント:
=は「右側の値を左側の変数へ入れる」記号。数学の「等しい」とは違う。 - 使い方: 「変数名 = 値;」
int age;
age = 20; // ageの箱に20を入れる
String name;
name = "Taro"; // nameの箱に「Taro」を入れる
Java初期化ってなに?宣言と同時に値を入れる
- 利点: 宣言した瞬間に値も入れると「空箱のまま使ってしまう」ミスを防げる。
- 書き方: 「型 変数名 = 値;」
int age = 20;
String name = "Taro";
double price = 199.99;
Java変数の値は上書きできる
- 性質: 変数は中身を何度でも入れ直せる(最後に代入した値が有効)。
int score = 50;
score = 80; // 80に更新
score = score + 5; // 85に更新(元の値を使って計算してから代入)
Java未初期化のまま使うとエラーになる
- 原因: ローカル変数(メソッドの中で宣言した変数)は、値が入っていないと使えない。
- 対策: 必ず値を入れてから使う。
public class Main {
public static void main(String[] args) {
int num; // まだ空
// System.out.println(num); // エラー:値が未設定
num = 10; // 代入
System.out.println(num); // 10 と表示
}
}
Java同じ値をまとめて代入(連鎖代入)
- 使いどころ: 初期状態をそろえたいときに便利。
- 注意: 代入は右から左へ評価される。
int width, height, depth;
width = height = depth = 0; // 3つとも0になる
Java代入と計算を組み合わせる(複合代入演算子)
- 楽に書く: 「足してから代入」などを短く書ける。
- 代表例:
x += 3;はx = x + 3;と同じx -= 2;はx = x - 2;と同じx *= 5;はx = x * 5;と同じ
int x = 10;
x += 3; // 13
x *= 2; // 26
x -= 6; // 20
System.out.println(x); // 20
Javaよくある間違いと対策
- 型が合わない代入:
例:int age = "20";は不可(文字列はString、数値はint)。 - 未初期化の使用:
例:宣言だけしてprintlnするとエラー。先に代入する。 - イコールの誤解:
例:a = b;は「bの値をaへコピー」であり、aとbがずっと連動するわけではない。 - 整数同士の計算で小数が消える:
例:int a = 1; int b = 2; double c = a / b; // 0.0 になる
対策:double c = (double)a / b; // 0.5
例題で理解を固める
例題1:初期化して合計を計算
public class Main {
public static void main(String[] args) {
int apple = 3; // りんご
int orange = 2; // みかん
int total = apple + orange; // 合計を計算して代入
System.out.println("合計: " + total); // 合計: 5
}
}
Java- ポイント: 計算結果も「値」なので、そのまま代入できる。
例題2:値の更新(上書き)を体験
public class Main {
public static void main(String[] args) {
int score = 70; // 初期スコア
score += 10; // ボーナス加算 → 80
score = score - 5; // ペナルティ減算 → 75
System.out.println("最終スコア: " + score);
}
}
Java- ポイント: 複合代入を使うと読みやすく、バグを減らせる。
例題3:連鎖代入で初期状態をそろえる
public class Main {
public static void main(String[] args) {
int w, h, d;
w = h = d = 1; // 3次元の初期サイズを全部1に
System.out.println(w + ", " + h + ", " + d); // 1, 1, 1
}
}
Java- ポイント: 右から左へ値が渡っていく。読みやすさを優先して使いすぎない。
例題4:未初期化エラーを避ける
public class Main {
public static void main(String[] args) {
int count;
// System.out.println(count); // ダメ
count = 1; // 代入してから使う
System.out.println(count);
}
}
Java- ポイント: ローカル変数は初期化必須。困ったら宣言時に初期化するのが安全。
練習問題
- 問題1: 変数
price(整数)を宣言し、初期値を300に設定。priceに消費税10%を上乗せして、最終金額を表示してください。
ヒント:
int price = 300; // ここに計算(整数同士だと小数が消えることに注意)Java- 問題2: 変数
name(文字列)を初期化して、あとから別の名前に上書き。最終的な名前を表示してください。 - 問題3: 変数
a, b, c(すべて整数)を宣言し、連鎖代入で全部0に。その後aだけ5に更新して、3つの値を表示してください。
