Javaの演算子って、「+」や「==」のような簡単そうな記号ばかり。でも、実際にコードを書いてみると「これ、どう使うの?」と混乱する人が多いのが現実です。
私も、「==」と「equals()」の違いや「&&と||」の使い分けで何度もバグを出した経験があります。
この記事では、小学生でもわかる言葉や例を使って、Javaの演算子を「種類・使い方・違い・注意点」まで徹底的にわかりやすく解説します。
この記事を読んだ多くの初学者が、「ようやく頭の中が整理できた!」と感動しています。
「a == b
とa.equals(b)
、どっちを使うの?」という疑問も、この記事を読めばスッと理解できるようになります。
さあ、Javaの演算子に強くなって、バグのないコードを書けるようになりましょう!
演算子の種類が多すぎて混乱する〜全体像をつかもう〜
Javaにはたくさんの演算子がありますが、それぞれ役割が決まっていて、全体像を知ることで一気に理解が進みます。
演算子は「計算」「比較」「条件判断」「代入」など目的ごとに分かれていて、分類がわかれば覚えるのが簡単になります。
こちらは具体例です
- 算術演算子:
+
,-
,*
,/
,%
(例:3 + 5
) - 代入演算子:
=
,+=
,-=
(例:x += 1;
) - 比較演算子:
==
,!=
,<
,>
(例:a == b
) - 論理演算子:
&&
,||
,!
(例:a > 10 && b < 5
) - 三項演算子:
?:
(例:x > 0 ? "正" : "負"
) - インクリメント・デクリメント:
++
,--
最初に「どういう種類があるのか」をざっくり理解しておくだけで、学習が何倍もスムーズになります!
演算子の優先順位や結合規則に戸惑う〜かっこがないとバグる理由〜
Javaには「この演算子は先に計算する」というルール=優先順位があり、それに従って計算が進みます。
人間の直感とは異なり、コンピュータは「決まった順番」で処理を進めます。優先順位を知らないと、思わぬバグになります。
具体例を見てみましょう!
int result = 2 + 3 * 4;
System.out.println(result); // 14になる
3 * 4
が先に計算されてから + 2
されるため、結果は 14 です。
これを強制的に変えるには「かっこ」で明示します。
int result = (2 + 3) * 4; // 20になる
また、結合規則には「左から右」「右から左」があります。 たとえば:
int x = y = z = 5;
これは z = 5
→ y = 5
→ x = 5
という順番(右から左)で代入されます。
優先順位と結合規則を意識して書くだけで、「なぜこの値になるの?」という疑問がスッキリ解決します!
論理演算子(&&、||、!)の意味や使い方が直感的にわからない
論理演算子は、「条件が正しいかどうか」を判断して、プログラムの流れをコントロールするための道具です。
複数の条件を組み合わせて、「全部合っているときだけ」「どれかが合っていれば」といった判断ができるようになります。
具体例を見てみましょう!
&&
(アンド):両方の条件がtrueのときにtrueになります。
int age = 20;
boolean isStudent = true;
if (age > 18 && isStudent) {
System.out.println("大人の学生です");
}
||
(オア):どちらか1つでもtrueならtrueになります。
int age = 16;
boolean hasLicense = true;
if (age > 18 || hasLicense) {
System.out.println("バイクに乗れる可能性あり");
}
!
(ノット):trueをfalseに、falseをtrueに変えます。
boolean isAdult = false;
if (!isAdult) {
System.out.println("未成年です");
}
論理演算子を使えば、「条件を組み合わせて判断する力」が身につき、if文がパワーアップします!
「==」と「equals()」の違いがわからない〜オブジェクト比較の落とし穴〜
==
は「同じものか(同じ場所か)」を比べ、equals()
は「中身が同じか」を比べます。
Javaでは、オブジェクトは「箱に入った住所のメモ」のようなもので、==
はそのメモの場所を比べています。equals()
は箱の中身(内容)を比べます。
String a = new String("hello");
String b = new String("hello");
System.out.println(a == b); // false(違う場所)
System.out.println(a.equals(b)); // true(同じ内容)
プリミティブ型(int, booleanなど)では==
で比較OKですが、オブジェクト型(Stringなど)はequals()
を使いましょう。
「参照と値」の違いを理解すれば、==とequals()の正しい使い分けができるようになります!
三項演算子(条件演算子)の使い方が難しい〜if文との使い分け〜
三項演算子は、「if文を1行で書ける便利なツール」。でも、使いすぎると読みにくくなるので注意が必要です。
短い条件分岐なら三項演算子がスッキリ見やすくなります。ただし、複雑な処理を詰め込むと逆にわかりづらくなってしまいます。
例えば下のようなif文があったとします。
String result;
if (score >= 70) {
result = "合格";
} else {
result = "不合格";
}
これを三項演算子で書くと
int score = 85;
String result = score >= 70 ? "合格" : "不合格";
System.out.println(result);
このように書けます。
三項演算子の形は:
条件 ? trueのときの値 : falseのときの値
このような形で書けます!
注意点:
- ネスト(入れ子)にすると読みづらくなります。
- 値を返す処理だけに使いましょう。
三項演算子は「シンプルなifのショートカット」。使いどころを見極めれば、とても便利な演算子です!
まとめ 〜Java演算子の“迷子”から脱出しよう〜
この記事で解決したこと:
- 演算子の種類を全体像で整理できた
- 優先順位と結合規則の理解が深まった
- ==とequals()の違いが明確になった
- 論理演算子と三項演算子を安心して使えるようになった
最後にひとこと:
「演算子で表すロジック」を理解できれば、コードがもっと自由に書けます。演算子を味方にすれば、あなたのJavaスキルは一段とレベルアップします!