【Java】計算だけじゃない!プログラミングを支える「演算子」の基本まとめ
はじめに
みなさんどうも、おげんです。
Javaを勉強していると、当たり前のように使っている + や - といった記号。
これらはプログラミングの世界では 「演算子(えんざんし)」 と呼ばれています。
「算数の授業じゃないんだから、足し算なんてわかってるよ!」と思うかもしれません。
でも、Javaの演算子はただの計算だけじゃないんです。
文字と文字をくっつけたり、条件を細かく指定したり、変数の数字を1だけ増やしたり……。
これらを使いこなすことで、Javaへの「命令」がより正確に、そしてスマートに伝わるようになります。
今回は、これまで書いてきた「条件分岐(if文)」や「繰り返し(for文)」の裏側で活躍していた、頼れる演算子たちをスッキリ整理してみようと思います。
基礎の総復習として、一緒に見ていきましょう!
- 数字の足し算はわかるけど、文字が混ざると混乱する人
i++や%などの記号が、実際どう役に立つのか知りたい人- これまでの学習内容を、演算子という視点で整理したい人
基本の四則演算と「あまり」の計算
まずは基本の「キ」から。Javaでも算数と同じ記号を使います。
+(加算):足し算-(減算):引き算*(乗算):掛け算/(除算):割り算
ここまでは簡単ですが、プログラミングで超重要なのがこれです!
%(剰余演算):割り算の「あまり」
あまり(%)っていつ使うの?
「あまりなんて、いつ使うんだよ」と思いますよね。
実はこれ、 「偶数か奇数かを判定する」 ときにめちゃくちゃ便利なんです。
「数字を2で割って、あまり(%)が0なら偶数、1なら奇数」
このルールを使えば、for文の中で「2行ごとに色を変える」なんて処理も簡単に作れちゃいます。地味に見えて、実はかなりデキるやつなんです。
文字列の結合:なぜ「1020」になるのか?
Javaを触り始めたばかりの頃、こんな経験をしませんでしたか?
「10と20を足したから30が表示されるはず……えっ、1020!?」
実はこれ、Javaが「これは計算じゃなくて、文字の貼り付けだ!」と判断した結果なんです。
「数値」か「文字列」かで意味が変わる
同じ + という記号でも、Javaはその両隣に何があるかをしっかり見ています。
- 数値 + 数値:算数の「足し算」をする(例:
10 + 20→30) - 文字列 + 文字列:文字を「結合」する(例:
"10" + "20"→"1020")
片方が「文字列」なら、もう片方も引きずられる
さらに面白い(厄介な)のが、片方が文字列(""で囲まれている)だと、Javaは全体を文字列として扱おうとする点です。
System.out.println("合計は" + 10 + 20);これ、実行するとどうなると思いますか?
正解は 「合計は1020」 です。
まず「”合計は” + 10」が結合されて「”合計は10″」という文字になり、そこにさらに「20」が文字としてペタッと貼り付くイメージです。
カッコを使って優先順位を上げよう!
もし「合計は30」と出したいなら、算数と同じでカッコ () を使ってあげればOKです。
System.out.println("合計は" + (10 + 20)); // これで「合計は30」になる!カッコの中を先に計算させて、その結果(30)を最後に文字とくっつける。
この「優先順位」を意識するだけで、意図しない表示ミスを防げるようになります。
++ と --(インクリメント・デクリメント)
for文を書くとき、当たり前のように最後に i++ と書いていますよね。
これは「インクリメント演算子」といって、「変数の値を1だけ増やす」という、プログラミングで最も頻繁に使われる命令のひとつです。
なぜ専用の記号があるの?
実は、i++ はこれと同じ意味です。 i = i + 1; (今のiに1を足して、またiに入れ直す)
でも、プログラミングをしていると「1だけ増やす」という場面がめちゃくちゃ多いんです。
- ループの回数を数えるとき
- データの件数をカウントするとき
- ゲームでレベルが1上がるとき
「いちいち i = i + 1 って書くの面倒くさい!」というエンジニアの心の声から生まれたのが、この ++ です。
逆バージョンの --(デクリメント)
もちろん、1減らすための -- もあります。
カウントダウンタイマーや、在庫を1つ減らす処理などで活躍します。
++ と –(コード例)
実際に数字がどう変わっていくのかを、System.out.println で追いかけてみましょう。
public class CounterSample {
public static void main(String[] args) {
int level = 1;
// ++ でレベルアップ!
level++;
System.out.println("現在のレベル:" + level); // 2 と表示される
// 実はこれと同じ意味
level = level + 1;
System.out.println("さらにレベルアップ:" + level); // 3 と表示される
// -- でデクリメント(1減らす)
int itemStock = 5;
itemStock--;
System.out.println("在庫を1つ減らしました:" + itemStock); // 4 と表示される
}
}i = i + 1 と書くよりも、i++ と書く方が「1増やすんだな!」という意図がパッと見て伝わります。
エンジニア同士の共通言語みたいなものですね。
置く場所で意味が変わる!?
++ を変数の前に置くか(++i)、後ろに置くか(i++)で、実は「いつ1増やすか」というタイミングが微妙に違います。
public class IncrementTest {
public static void main(String[] args) {
// 1. 後置(うしろにおく)
int a = 10;
int b = a++; // 「aをbに入れてから」aを1増やす
System.out.println("後置の場合:");
System.out.println("bの値は? -> " + b); // 10(増える前の値が入る)
System.out.println("aの値は? -> " + a); // 11
System.out.println("---");
// 2. 前置(まえにおく)
int x = 10;
int y = ++x; // 「xを1増やしてから」xをyに入れる
System.out.println("前置の場合:");
System.out.println("yの値は? -> " + y); // 11(増えた後の値が入る)
System.out.println("xの値は? -> " + x); // 11
}
}どう使い分ける?
- 後置(
a++): 「今の値で処理を済ませてから、最後に1増やしておいて!」というイメージ。for文の更新処理などでよく使われる、もっとも一般的な形です。 - 前置(
++x): 「何はともあれ、まずは1増やして!その後の値を使ってね!」というイメージ。
初心者のうちは、「基本は後ろ(i++)を使う」と覚えておけばOKです!
ただ、他人のコードを読んだときに「あ、これは先に増やしてるんだな」と気づけるようになると、一気に脱・初心者感が漂いますよ。
比較演算子と論理演算子(条件分岐の相棒)
if文のカッコ () の中で使われる記号たちです。
これらは「YesかNoか(trueかfalseか)」を判定するために使われます。
「比べる」ための比較演算子
==(等しい):左右が同じかどうか。!=(等しくない):左右が違うかどうか。>/<:大きいか、小さいか。
注意ポイント: 算数では「=」は1つですが、プログラミングで = は「代入(右のものを左に入れる)」という意味。
「同じ?」と聞くときは == と2つ書くのが鉄則です!
「つなげる」ための論理演算子
「AかつB」「AまたはB」のように、複数の条件を組み合わせたい時に使います。
&&(かつ):両方の条件が合っていたらOK。||(または):どちらか片方でも合っていたらOK。
例えば、「HPが10以下」かつ「回復アイテムを持っている」ときだけ自動で回復する。
こういった処理も、この && を使えば一行で書けちゃいます。
比較演算子と論理演算子(コード例)
次に、複数の条件を組み合わせる &&(かつ)や ||(または)の使い方です。 開発中のアプリをイメージして、ログイン判定のコードを書いてみます。
public class LogicSample {
public static void main(String[] args) {
int hp = 8;
boolean hasItem = true;
// 【&&(かつ)の例】
// 「HPが10以下」かつ「アイテムを持っている」なら自動回復
if (hp <= 10 && hasItem == true) {
System.out.println("ピンチ!アイテムを使って回復します。");
}
// 【||(または)の例】
int score = 85;
boolean isGoldMember = false;
// 「スコアが80以上」または「ゴールド会員」なら合格
if (score >= 80 || isGoldMember == true) {
System.out.println("合格おめでとうございます!");
}
}
}条件が複雑になればなるほど、この演算子たちが力を発揮します。
ちなみに score >= 80 のように「以上・以下」を判定するときは、不等号 > を先に書くのがルールです。=> と書くとエラーになるので注意してくださいね!
まとめ:演算子はJavaへの「具体的な命令」
今回は、プログラムの至る所で活躍する「演算子」について解説しました。
- 四則演算と
%:計算だけでなく「あまり」を使って奇数・偶数を見分ける。 - 文字列の結合:
""が混ざると計算ではなく「貼り付け」になる(1020の罠!)。 ++と--:エンジニアの「楽をしたい」が生んだ、1だけ増減させる魔法の記号。- 比較と論理(
==,&&,||):if文の条件を細かく指定するための相棒。
最初はただの記号に見えていたものが、意味を知ることで「Javaに何をさせているか」がハッキリ見えるようになってきたはずです。
演算子をマスターすると、他人の書いたコードを読んだときも「あ、ここでカウントを増やしてるな」「ここで二つの条件をチェックしてるんだな」と、数式を読むように理解できるようになります。
まずは、自分の書いたコードの中にある演算子たちを「これは〇〇演算子だな」と指差し確認してみてください。
基礎を固めることが、複雑なプログラムを書くための最短ルートですよ!
今回も最後まで読んでいただき、ありがとうございました。
また次の一歩を、共に進めていきましょう。
