Knowledge Log

【Java】計算だけじゃない!プログラミングを支える「演算子」の基本まとめ

denson
1

はじめに

みなさんどうも、おげんです。

Javaを勉強していると、当たり前のように使っている +- といった記号。

これらはプログラミングの世界では 「演算子(えんざんし)」 と呼ばれています。

「算数の授業じゃないんだから、足し算なんてわかってるよ!」と思うかもしれません。

でも、Javaの演算子はただの計算だけじゃないんです。

文字と文字をくっつけたり、条件を細かく指定したり、変数の数字を1だけ増やしたり……。

これらを使いこなすことで、Javaへの「命令」がより正確に、そしてスマートに伝わるようになります。

今回は、これまで書いてきた「条件分岐(if文)」や「繰り返し(for文)」の裏側で活躍していた、頼れる演算子たちをスッキリ整理してみようと思います。

基礎の総復習として、一緒に見ていきましょう!

この記事はこんな人におすすめ!
  • 数字の足し算はわかるけど、文字が混ざると混乱する人
  • i++% などの記号が、実際どう役に立つのか知りたい人
  • これまでの学習内容を、演算子という視点で整理したい人
2

基本の四則演算と「あまり」の計算

まずは基本の「キ」から。Javaでも算数と同じ記号を使います。

  • +(加算):足し算
  • -(減算):引き算
  • *(乗算):掛け算
  • /(除算):割り算

ここまでは簡単ですが、プログラミングで超重要なのがこれです!

  • %(剰余演算):割り算の「あまり」

あまり(%)っていつ使うの?

「あまりなんて、いつ使うんだよ」と思いますよね。

実はこれ、 「偶数か奇数かを判定する」 ときにめちゃくちゃ便利なんです。

「数字を2で割って、あまり(%)が0なら偶数、1なら奇数」

このルールを使えば、for文の中で「2行ごとに色を変える」なんて処理も簡単に作れちゃいます。地味に見えて、実はかなりデキるやつなんです。

3

文字列の結合:なぜ「1020」になるのか?

Javaを触り始めたばかりの頃、こんな経験をしませんでしたか?

「10と20を足したから30が表示されるはず……えっ、1020!?」

実はこれ、Javaが「これは計算じゃなくて、文字の貼り付けだ!」と判断した結果なんです。

「数値」か「文字列」かで意味が変わる

同じ + という記号でも、Javaはその両隣に何があるかをしっかり見ています。

  • 数値 + 数値:算数の「足し算」をする(例:10 + 2030
  • 文字列 + 文字列:文字を「結合」する(例:"10" + "20""1020"

片方が「文字列」なら、もう片方も引きずられる

さらに面白い(厄介な)のが、片方が文字列(""で囲まれている)だと、Javaは全体を文字列として扱おうとする点です。

System.out.println("合計は" + 10 + 20);

これ、実行するとどうなると思いますか?

正解は 「合計は1020」 です。

まず「”合計は” + 10」が結合されて「”合計は10″」という文字になり、そこにさらに「20」が文字としてペタッと貼り付くイメージです。

カッコを使って優先順位を上げよう!

もし「合計は30」と出したいなら、算数と同じでカッコ () を使ってあげればOKです。

System.out.println("合計は" + (10 + 20)); // これで「合計は30」になる!

カッコの中を先に計算させて、その結果(30)を最後に文字とくっつける。
この「優先順位」を意識するだけで、意図しない表示ミスを防げるようになります。

4

++--(インクリメント・デクリメント)

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です!

ただ、他人のコードを読んだときに「あ、これは先に増やしてるんだな」と気づけるようになると、一気に脱・初心者感が漂いますよ。

5

比較演算子と論理演算子(条件分岐の相棒)

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 のように「以上・以下」を判定するときは、不等号 > を先に書くのがルールです。=> と書くとエラーになるので注意してくださいね!

6

まとめ:演算子はJavaへの「具体的な命令」

今回は、プログラムの至る所で活躍する「演算子」について解説しました。

  • 四則演算と %:計算だけでなく「あまり」を使って奇数・偶数を見分ける。
  • 文字列の結合"" が混ざると計算ではなく「貼り付け」になる(1020の罠!)。
  • ++--:エンジニアの「楽をしたい」が生んだ、1だけ増減させる魔法の記号。
  • 比較と論理(==, &&, ||:if文の条件を細かく指定するための相棒。

最初はただの記号に見えていたものが、意味を知ることで「Javaに何をさせているか」がハッキリ見えるようになってきたはずです。

演算子をマスターすると、他人の書いたコードを読んだときも「あ、ここでカウントを増やしてるな」「ここで二つの条件をチェックしてるんだな」と、数式を読むように理解できるようになります。

まずは、自分の書いたコードの中にある演算子たちを「これは〇〇演算子だな」と指差し確認してみてください。

基礎を固めることが、複雑なプログラムを書くための最短ルートですよ!

今回も最後まで読んでいただき、ありがとうございました。

また次の一歩を、共に進めていきましょう。

ABOUT ME
おげん
おげん
駆け出しエンジニア
文系未経験からエンジニアになるために挑戦を開始したアラサー。転職活動を終え、2026年4月からIT企業で勤務予定。自分が学習で苦労した経験を『誰かのための道しるべ』として発信中。
記事URLをコピーしました