Java超|演算子と式の基本

式は、Javaの中で値へ変わる“技の構え”。演算子という技を読み取れるようになると、計算、代入、条件判定、文字列連結まで、コードの流れが一気に見えるようになる。

Javaのプログラムでは、数値を計算したり、条件を比べたり、文字列をつなげたり、変数に値を入れたりする場面がたくさん出てきます。

たとえば、次のようなコードです。

int power = 5 + 7;
System.out.println("修行値は " + power + " です。");

この中にある 5 + 7 は、ただの記号の並びではありません。

Javaは 5 + 7 を見つけると、それを計算して 12 という値にします。このように、Javaが式を計算して結果を決めることを 評価 といいます。

3章では、変数に値を入れること、値を変更すること、キーボードから入力した値を変数に入れることを学びました。ここからさらに進むと、変数に入れる値を 計算で作る 場面が増えていきます。その中心にあるのが、演算子 です。

ドラゴンボール風にたとえるなら、式は 戦士が放つ一連の技の構え です。

演算子は、その技の動きを決める記号です。

オペランドは、技の対象になる数値や変数です。

Javaの用語意味ドラゴンボール風のたとえ
評価されて値になるもの技の構え
演算子計算や比較などの働きをする記号技の動きを決める型
オペランド演算の対象になる値や変数技の材料、対象
評価式を計算して結果を決めること技を発動して結果を出す
式の値評価された後の結果技を放った結果

たとえば、1 + 2 という式では、1 と 2 がオペランド、+ が演算子です。

Javaはこの式を評価して、3 という値にします。

1 + 2
部分役割
1オペランド
+演算子
2オペランド
3評価後の値

Javaを学び始めたばかりのころは、5 + 7 や price * count を、単なる記号の並びとして見てしまいやすいです。

しかし、Javaにとって式は、最終的に何らかの値になるものです。

数値になることもあります。
true や false になることもあります。
文字列になることもあります。

ここを理解できると、Javaのコードがぐっと読みやすくなります。

この計算はどこで行われるのか。
この + は足し算なのか、文字列の連結なのか。
この式は最終的にどんな値になるのか。

このように考えながら読むことで、Javaの処理の流れが見えてきます。

式は評価されて値になるもの

式とは、Javaが評価すると何らかの値になるものです。

たとえば、次のようなものが式です。

1 + 2
5 * 3
10 - 4
9 % 4

これらは、Javaによって評価されると、最終的に値になります。

評価後の値意味
1 + 231 と 2 を足す
5 * 3155 に 3 を掛ける
10 - 4610 から 4 を引く
9 % 419 を 4 で割った余り

ドラゴンボール風にたとえるなら、式は 技を出す前の構え です。

構えを見ただけでは、まだ結果は出ていません。

しかし、技が発動すると、相手に与える力や結果が決まります。

Javaでも同じです。

5 * 3 という式は、評価されることで 15 という値になります。

5 * 3

この式は、Javaの処理の中では最終的に 15 として扱われます。

ここで大切なのは、式は書かれた形そのものではなく、評価された後の値として使われる ということです。

たとえば、次のコードを見てみます。

int total = 8 + 2;

この場合、変数 total に入るのは、8 + 2 という文字の並びではありません。

8 + 2 が評価されて、10 になり、その 10 が total に入ります。

処理内容
8 + 2
評価10 になる
int total = 10;total に 10 が入る

この感覚が身につくと、代入、条件分岐、繰り返し処理も理解しやすくなります。

Javaコードを読むときは、式を見つけたら、まず これは最終的にどんな値になるのか と考えるのが大切です。

演算子とオペランド

式は、多くの場合、演算子とオペランドでできています。

用語意味
演算子計算や比較などの処理を表す記号+、-、*、/、%、>、=
オペランド演算の対象になる値や変数1、2、price、count
演算子とオペランドを組み合わせたもの1 + 2、price * count

たとえば、次の式を見てみます。

1 + 2

この式は、次のように分けられます。

部分役割
1オペランド
+演算子
2オペランド

ドラゴンボール風にたとえるなら、1 と 2 は技に使うエネルギーの材料です。

+ は、その材料をどう扱うかを決める技の型です。

つまり、演算子が 何をするか を決め、オペランドが 何に対して行うか を表します。

もう少し実用的な式で考えてみます。

price * count

この式では、price と count がオペランドです。

* が演算子です。

部分役割
priceオペランド
*演算子
countオペランド

price に 1200、count に 3 が入っていれば、price * count は 3600 に評価されます。

int price = 1200;
int count = 3;
int sum = price * count;
変数
price1200
count3
sum3600

このように、式の中では、直接書いた数値だけでなく、変数もオペランドになります。

変数がオペランドになる場合は、その変数の中に入っている値が使われます。

図:式が評価されて値になる流れ

この図が示していること

この図では、1 + 2 という式が、オペランド、演算子、オペランドの組み合わせでできていることを表しています。

1 と 2 は演算の対象であり、+ はそれらを足すための演算子です。

Javaはこの式を評価し、最終的に 3 という値にします。

この図から分かること

式を読むときは、次の流れで考えると理解しやすくなります。

見るポイント考え方
オペランド何を対象にするのか
演算子どんな処理をするのか
評価結果としてどんな値になるのか

つまり、式を見るときは これはどんな値になるのか と考えることが大切です。

この見方ができると、Javaの計算や代入の流れがかなり追いやすくなります。

式の評価とは

評価とは、式を計算して結果を決めることです。

たとえば、次の式があります。

5 * 3

Javaがこの式を評価すると、結果は 15 になります。

次の式ならどうでしょうか。

10 - 4

この式は評価されると、6 になります。

「評価」という言葉は少しかたく聞こえるかもしれません。

しかし、意味はとてもシンプルです。

式を見て、結果の値を決めること です。

ドラゴンボール風にたとえるなら、式は技の構え、評価は技を実際に発動する瞬間、式の値は技を放った結果です。

ドラゴンボール風のたとえJavaでの意味
技の構え
技を発動する評価
技の結果式の値
技の型演算子
技の対象オペランド

Javaでは、プログラムのあちこちで評価が行われています。

たとえば、次のコードです。

int total = 8 + 2;

この場合、8 + 2 が評価されて 10 になります。

その 10 が total に代入されます。

つまり、total に入るのは 8 + 2 という形ではなく、評価後の 10 です。

式の値を出力するプログラム

式の値を画面に表示すると、式が評価されていることを確認しやすくなります。

画面に出力するときは、System.out.println を使います。

ファイル名:Sample1.java

class Sample1
{
    public static void main(String[] args)
    {
        // 気の修行ポイントを計算して表示する
        System.out.println("気の修行ポイントは " + (5 + 7) + " 点です。");

        // 必殺技を使ったあとの残り体力を計算して表示する
        System.out.println("必殺技後の残り体力は " + (20 - 8) + " です。");
    }
}

実行結果

気の修行ポイントは 12 点です。
必殺技後の残り体力は 12 です。

このプログラムでは、println の中に文字列と式を一緒に書いています。

(5 + 7)

この部分は式です。

Javaはこの式を評価して、12 という値にします。

次の部分も式です。

(20 - 8)

こちらも評価されると 12 になります。

ここで大切なのは、画面に表示されているのが 5 + 7 や 20 - 8 という式そのものではなく、評価された後の値だという点です。

Javaは println の中に式を見つけると、その式を評価し、結果の値を文字列とつなげて表示します。

コード内の式評価後の値表示に使われる値
5 + 71212
20 - 81212

ドラゴンボール風に言えば、5 + 7 は修行ポイントを合成する技の構えです。

技が発動すると 12 点という結果になり、その結果がモニターに表示されます。

丸かっこで計算の順番をはっきりさせる

次のように、式を丸かっこで囲むことがあります。

System.out.println("気の修行ポイントは " + (5 + 7) + " 点です。");

この丸かっこには、ここを先に計算してね とJavaに伝える役割があります。

もし丸かっこを書かないと、思った結果にならないことがあります。

System.out.println("気の修行ポイントは " + 5 + 7 + " 点です。");

この場合、Javaは左から順番に処理します。

最初に、文字列と 5 がつながります。

気の修行ポイントは 5

そのあと、さらに 7 が文字列としてつながります。

気の修行ポイントは 57 点です。

つまり、5 と 7 が数値として足されるのではなく、文字列として連結されてしまいます。

書き方Javaの処理結果
"気の修行ポイントは " + (5 + 7) + " 点です。"5 + 7 を先に計算する気の修行ポイントは 12 点です。
"気の修行ポイントは " + 5 + 7 + " 点です。"左から文字列としてつなげる気の修行ポイントは 57 点です。

初心者がつまずきやすいところなので、数値として計算してほしい部分は丸かっこで囲む、と覚えておくと安心です。

ドラゴンボール風にたとえるなら、丸かっこは 先に発動する技の結界 です。

結界で囲まれた技は、ほかの動きより先に発動します。

+ は足し算にも文字列連結にも使われる

Javaでは、+ は足し算だけに使うわけではありません。

文字列をつなげるときにも使います。

System.out.println("こんにちは" + "Java");

この場合、+ は文字列をつなげる役割になります。

実行結果は次のようになります。

こんにちはJava

一方で、次のように数値どうしに使うと、足し算になります。

System.out.println(3 + 4);

実行結果は次のようになります。

7

同じ + でも、相手が数値なのか文字列なのかによって役割が変わります。

書き方+ の役割結果
3 + 4数値の足し算7
"こんにちは" + "Java"文字列の連結こんにちはJava
"結果は " + (3 + 4)計算結果と文字列の連結結果は 7
"結果は " + 3 + 4左から文字列として連結結果は 34

ドラゴンボール風にたとえるなら、+ は状況によって型が変わる技です。

数値どうしなら、力を合成する足し算の技になります。

文字列が関わると、言葉をつなげる連結の技になります。

そのため、+ を見つけたら、次のように確認するとよいです。

確認すること判断
数値どうしか足し算になりやすい
文字列が含まれているか文字列連結になりやすい
丸かっこがあるか丸かっこの中が先に評価される

特に System.out.println の中では、文字列と数値を一緒に書くことが多いため、+ が文字列連結として働く場面がよくあります。

図:数値の足し算と文字列連結の違い

この図が示していること

この図では、同じ + でも、数値どうしなら足し算になり、文字列が関わると文字列連結になることを示しています。

左側では、3 + 4 が評価されて 7 になります。

右側では、"結果は " + 3 + 4 が左から処理され、結果は 34 になります。

この図から分かること

+ を見たら、必ず足し算だと決めつけないことが大切です。

特に System.out.println の中では、文字列と数値を一緒に書くことが多いため、+ が文字列連結として働く場面がよくあります。

数値として先に計算したい場合は、次のように丸かっこを使います。

System.out.println("結果は " + (3 + 4));

この場合、3 + 4 が先に評価されるため、結果は次のようになります。

結果は 7

Javaの四則演算

Javaでは、算数で使う記号と少し違う書き方をするものがあります。

特に、掛け算は × ではなく * を使います。

割り算は ÷ ではなく / を使います。

演算の種類Javaの演算子評価後の値
足し算+3 + 25
引き算-7 - 16
掛け算*4 * 520
割り算/8 / 24
余り%9 % 41

プログラミングでは、キーボードで入力しやすい記号が使われます。

そのため、数学の記号とJavaの記号を区別して覚えることが大切です。

数学の感覚Javaでの書き方
6 × 46 * 4
8 ÷ 28 / 2
9 を 4 で割った余り9 % 4

% は、余りを求める演算子です。

9 % 4

9 を 4 で割ると、商は 2、余りは 1 です。

そのため、9 % 4 の評価後の値は 1 になります。

ドラゴンボール風にたとえるなら、% はエネルギーを均等に分けたあとに残る 余りの気 を調べる技です。

たとえば、9個の修行玉を4人で同じ数ずつ分けると、1個余ります。

この余りを求めるのが % です。

式は変数への代入でも使われる

式は println の中だけで使うものではありません。

変数に値を入れるときにも使われます。

int total = 8 + 2;

この場合、8 + 2 が評価されて 10 になり、その値が total に入ります。

処理内容
8 + 2
評価10 になる
int total = 10;total に 10 が入る

もう少し実用的な例を見てみます。

int capsulePrice = 1200;
int capsuleCount = 3;
int totalCost = capsulePrice * capsuleCount;

この場合、capsulePrice * capsuleCount が式です。

capsulePrice は 1200、capsuleCount は 3 なので、capsulePrice * capsuleCount は 3600 に評価されます。

その結果、totalCost には 3600 が入ります。

変数
capsulePrice1200
capsuleCount3
totalCost3600

ドラゴンボール風にたとえるなら、capsulePrice はカプセル1個の準備費、capsuleCount は個数、totalCost は合計準備費です。

capsulePrice * capsuleCount という式を評価することで、合計が求められます。

このように、式は変数と組み合わせて使うことで、プログラムの中で計算結果を保存できるようになります。

条件判定でも式は使われる

式は、計算だけでなく条件判定にも使われます。

たとえば、次のような式があります。

battleScore >= 60

これは、battleScore が 60 以上かどうかを判定する式です。

評価結果は true または false になります。

battleScore の値評価後の値
80battleScore >= 60true
45battleScore >= 60false

このような式は、if 文などでよく使われます。

if (battleScore >= 60) {
    System.out.println("修行試験に合格です。");
}

ここでは battleScore >= 60 が評価され、その結果が true なら中の処理が実行されます。

ドラゴンボール風にたとえるなら、battleScore >= 60 は 修行試験を突破できるかどうかを判定する関門 です。

結果が true なら通過。

false なら、まだ修行が必要です。

式の種類評価後の値
5 + 7数値
"結果は " + 7文字列
battleScore >= 60true または false

このように、式は必ずしも数値だけになるわけではありません。

条件判定では、true または false になる式がとても重要になります。

演算子の優先順位に注意する

式の中に複数の演算子がある場合、Javaは決められた優先順位にしたがって評価します。

たとえば、次の式を見てみます。

2 + 3 * 4

この式は、左から順番に 2 + 3 を先に計算するわけではありません。

掛け算の * は足し算の + より優先順位が高いため、3 * 4 が先に評価されます。

手順評価
13 * 4 を評価して 12
22 + 12 を評価して 14

結果は 20 ではなく、14 です。

もし 2 + 3 を先に計算したい場合は、丸かっこを使います。

(2 + 3) * 4

この場合は、丸かっこの中が先に評価されます。

手順評価
12 + 3 を評価して 5
25 * 4 を評価して 20
書き方評価後の値
2 + 3 * 414
(2 + 3) * 420

ドラゴンボール風にたとえるなら、演算子には技の発動順があります。

* のような強い計算技は、+ より先に発動します。

ただし、丸かっこで囲むと、その中の技を先に発動できます。

初心者のうちは、迷いそうな式には丸かっこを付けると読みやすくなります。

丸かっこは、Javaにとっても読み手にとっても、計算の順番をはっきりさせる大切な目印です。

図:演算子の優先順位と丸かっこの役割

この図が示していること

この図は、同じ数字と演算子を使っていても、評価の順番によって結果が変わることを示しています。

2 + 3 * 4 では、掛け算が先に評価されるため、結果は14になります。

一方、(2 + 3) * 4 では、丸かっこの中が先に評価されるため、結果は20になります。

この図から分かること

式の中に複数の演算子がある場合、Javaは演算子の優先順位にしたがって評価します。

ただし、丸かっこを使うと、評価する順番をはっきり指定できます。

そのため、迷いそうな式や読み手に誤解されそうな式では、丸かっこを使うと分かりやすくなります。

これから学ぶ演算子につながる考え方

式と演算子の考え方は、この先のJava学習につながります。

今後は、単純な四則演算だけでなく、変数の値を増やしたり、減らしたり、代入と計算を組み合わせたりする演算子も出てきます。

今後学ぶ内容つながり
インクリメント演算子変数の値を 1 増やす
デクリメント演算子変数の値を 1 減らす
代入演算子評価した値を変数に入れる
シフト演算子ビットを左右に動かす
演算子の優先順位どの演算を先に評価するかを決める
型変換式の中で値の型が変わる
キャスト演算子型を明示的に変える

たとえば、次のような式があります。

count++;

これは、count の値を 1 増やす式です。

また、次のような書き方もあります。

total += price;

これは、total に price を加えて、再び total に代入する式です。

このような書き方も、基本には 式は評価されて値になる演算子は処理の働きを表す という考え方があります。

ドラゴンボール風にたとえるなら、今は基本の気弾や加算技を覚えている段階です。

これから先では、気を1段階上げる技、気を減らす技、複数の動きをまとめた技、ビットの位置を動かす技など、より細かい演算子を学んでいきます。

最初に式と演算子の土台をしっかり理解しておくと、あとから登場する少し複雑な演算子も受け止めやすくなります。

最初に押さえておきたい言葉

この記事で大切な言葉を整理します。

用語意味
評価されて何らかの値になるもの1 + 2
演算子計算や比較などの働きをする記号+、-、*、/
オペランド演算の対象になる値や変数1、2、price
評価式を計算して結果を決めること1 + 2 が 3 になる
式の値評価された後の結果3

特に大事なのは、式は評価されて値になる という考え方です。

Javaのコードを読むときは、式を見つけたら、次のように考えてみてください。

見るポイント考え方
どこが式か値になりそうな部分を探す
演算子は何か足し算、掛け算、比較、代入などを見分ける
オペランドは何か数値、文字列、変数を確認する
評価後の値は何か最終的にどんな値になるか考える
どこで使われるか出力、代入、条件判定などの流れを見る

この視点を持つだけで、プログラムの流れがかなり見えやすくなります。

Javaの式は、計算だけでなく、代入、文字列連結、条件判定にも関わります。

演算子の働きを少しずつ見分けられるようになると、Javaコードは単なる記号の並びではなく、値が生まれて流れていく処理として読めるようになります。