関係演算子と等価演算子の基本
はじめの一歩として、「数や文字をくらべて、結果として true/false を返す仕組み」を身につけましょう。条件分岐(if)や繰り返し(for/while)で必ず使います。
- 関係演算子: 「大小」や「以上/以下」をくらべる(
<,<=,>,>=) - 等価演算子: 「等しい/等しくない」をくらべる(
==,!=) - 結果は必ず真偽値: 比較の結果は
trueかfalseのどちらか
よく使う演算子と直感的な例
数値の比較
int a = 7;
int b = 4;
System.out.println(a < b); // false(7は4より小さくない)
System.out.println(a <= 7); // true(7は7以下)
System.out.println(a > b); // true(7は4より大きい)
System.out.println(a >= 8); // false(7は8以上ではない)
System.out.println(a == b); // false(7と4は等しくない)
System.out.println(a != b); // true(7と4は等しくない → 等しくないはtrue)
Java- ポイント: 「〜より小さい」「〜以上」など、日常の言葉に置き換えると理解しやすい。
文字と文字コードの比較(char)
char x = 'A'; // 文字コードが数値として存在します(Aは65)
char y = 'B'; // Bは66
System.out.println(x < y); // true(65 < 66)
System.out.println(x == 'A'); // true
Java- ポイント:
charは“1文字”を表し、内部的には数値として比較できます。
真偽値の比較(boolean)
boolean isReady = true;
System.out.println(isReady == true); // true
System.out.println(isReady != false); // true
Java- ポイント:
if (isReady)のように、直接使うのが読みやすい。
つまずきやすいところ:== と equals の違い
基本型(int, double, char, boolean)では
- == は「値が同じか」を判定します。例:
3 == 3は true。
参照型(String、配列、オブジェクト)では
- == は「同じもの(同じ場所)を指しているか」を判定します(同一性)。
- equals は「中身が同じか」を判定します(同値性)。
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // false(別々に作られたオブジェクト)
System.out.println(s1.equals(s2)); // true(中身の文字列は同じ)
Java- ポイント: 文字列の比較は
==ではなくequalsを使うのが基本。
配列の比較は特に注意
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b); // false(別の配列)
Java- 中身を比べたい場合:
Arrays.equals(a, b)を使います。
import java.util.Arrays;
System.out.println(Arrays.equals(a, b)); // true(要素がすべて同じ)
Java実用例:if/while/for での使い方
if文で条件分岐
int age = 18;
if (age >= 20) {
System.out.println("成人です");
} else {
System.out.println("未成年です");
}
Java- ラベル: 判定の読み方: 「age が 20以上なら…、そうでなければ…」
while文で繰り返し
int count = 1;
while (count <= 5) { // trueの間、繰り返す
System.out.println("count = " + count);
count++; // これを忘れると無限ループ
}
Java- ラベル: 終了条件の意識: 条件がいつ false になるかを必ず考える。
for文で範囲を決めて繰り返し
for (int i = 0; i < 3; i++) {
System.out.println("i = " + i); // 0, 1, 2
}
Java- ラベル: 典型パターン: 「初期値 → 条件(i < 3)→ 更新(i++)」の3点セット。
注意ポイント:浮動小数点の比較と境界条件
double/float の比較は誤差に注意
double x = 0.1 + 0.2;
System.out.println(x == 0.3); // 多くの場合 false(計算誤差のため)
Java- ラベル: コツ: 「ほぼ同じ」を判定したいなら、許容誤差(イプシロン)を使います。
double x = 0.1 + 0.2;
double eps = 1e-9;
System.out.println(Math.abs(x - 0.3) < eps); // true(差が小さいかで判定)
Java境界条件(<= と < の違い)
int score = 60;
if (score >= 60) { // 60も含む
System.out.println("合格");
} else {
System.out.println("不合格");
}
Java- ラベル: 含む/含まない:
<=や>=は“しきい値を含む”、<や>は“含まない”。
練習問題(手で動かして覚える)
- 比較の基本練習:
int a = 10, b = 10, c = 12;
// それぞれの出力結果を予想してから実行
System.out.println(a == b); // ?
System.out.println(a < c); // ?
System.out.println(c != b); // ?
Java- 文字列の比較:
String idInput = "USER01";
String idSaved = new String("USER01");
// 何が出力されるか予想してから実行
System.out.println(idInput == idSaved); // ?
System.out.println(idInput.equals(idSaved)); // ?
Java- 合格判定ロジック:
- 条件: 点数が70以上なら合格、60以上70未満なら「要追試」、60未満なら不合格
int score = 68;
if (score >= 70) {
System.out.println("合格");
} else if (score >= 60) { // 60〜69
System.out.println("要追試");
} else {
System.out.println("不合格");
}
Java- whileの終了条件を作る:
- 条件: 合計が100以上になるまで、1から順に足し続ける
int sum = 0;
int n = 1;
while (sum < 100) {
sum += n;
n++;
}
System.out.println("sum = " + sum + ", n = " + n);
Java- ラベル: 振り返りポイント: 「いつ true で、いつ false になるか」を説明できると理解が定着します。
