Java入門 STEP3|演算子を使ってみよう

karin@taishi@felmia

演算子とは?

Javaでは、足し算や引き算をしたり、2つの値を比べたりするときに「演算子」を使います。

例えば、足し算で使う + や、STEP2で変数に値を入れるときに使った = も演算子のひとつです。

演算子にはいくつか種類がありますが、このSTEPではよく使うものから順番に見ていきます。

種類何をするもの?
算術演算子足し算や引き算などの計算+ - * / %
代入演算子変数に値を入れる= += -=
比較演算子2つの値を比べる== != > <
論理演算子複数の条件を組み合わせる&& || !

算術演算子を使って計算してみよう

まずは、足し算や引き算などの計算に使う「算術演算子」から見ていきましょう。

Javaでは、次の演算子を使って計算できます。

演算子計算
+足し算10 + 3
-引き算10 - 3
*掛け算10 * 3
/割り算10 / 3
%割り算の余り10 % 3

掛け算には「×」ではなく*、割り算には「÷」ではなく/を使います。

%は少し見慣れないかもしれませんが、割り算をしたときの「余り」を求める演算子です。

例えば、10 % 3の結果は1になります。

実際に計算してみよう

新しくArithmeticSampleクラスを作成してください。

クラスを作成するときは、「public static void main(String[] args)」にもチェックを入れます。

作成できたら、次のコードを入力して実行してみましょう。

public class ArithmeticSample {

    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 3;

        System.out.println(num1 + num2);
        System.out.println(num1 - num2);
        System.out.println(num1 * num2);
        System.out.println(num1 / num2);
        System.out.println(num1 % num2);
    }

}

実行すると、コンソールには次のように表示されます。

実行結果

13
7
30
3
1

ここで、10 / 33になっていることに注目してください。

num1num2はどちらもintなので、計算結果も整数になります。そのため、小数部分は切り捨てられます。

int同士の割り算に注意
int同士で割り算をすると、計算結果の小数部分は切り捨てられます。
10 / 3の結果は3.333...ではなく、3になります。

小数まで計算したい場合

割り算の結果を小数まで求めたい場合は、doubleなどの小数を扱えるデータ型を使います。

例えば、次のように書きます。

double num1 = 10;
double num2 = 3;

System.out.println(num1 / num2);

実行すると、次のように表示されます。

実行結果

3.3333333333333335

double同士で計算しているため、intのときとは違い、小数部分も含めた結果を得ることができます。

代入演算子を使ってみよう

STEP2では、=を使って変数に値を代入しました。

int score = 10;

Javaでは、=以外にも、計算と代入をまとめて書ける演算子があります。

演算子意味同じ意味の書き方
+=足してから代入num = num + 5
-=引いてから代入num = num - 5
*=掛けてから代入num = num * 5
/=割ってから代入num = num / 5
%=余りを代入num = num % 5

例えば、

num += 5;

は、

num = num + 5;

と同じ意味です。

実際に使ってみよう

新しくAssignmentSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class AssignmentSample {

    public static void main(String[] args) {
        int num = 10;

        num += 5;

        System.out.println(num);
    }

}

実行結果

15

最初にnumには10が入っています。

そのあと、

num += 5;

を実行しているので、num5が足され、値が15に変わります。

+=などの書き方は、これからJavaのコードを書く中でもよく登場します。
まずは「計算して、その結果を同じ変数に入れ直す書き方」と覚えておきましょう。

インクリメント・デクリメントを使ってみよう

変数の値を「1だけ増やす」「1だけ減らす」ときは、さらに短い書き方があります。

書き方意味同じ意味の書き方
num++1増やすnum = num + 1
num--1減らすnum = num - 1

++を「インクリメント」、--を「デクリメント」と呼びます。

例えば、

num++;

と書くと、numに入っている値が1増えます。

実際に使ってみよう

新しくIncrementSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class IncrementSample {

    public static void main(String[] args) {
        int num = 10;

        num++;
        System.out.println(num);

        num--;
        System.out.println(num);
    }

}

実行結果

11
10

最初にnumには10が入っています。

num++;を実行すると1増えて11になり、そのあとnum--;を実行すると1減って10に戻ります。

++--は、同じ処理を繰り返すときにもよく使います。
繰り返し処理については、後のSTEPで実際に使いながら学んでいきます。

++numという書き方もある

num++のほかに、

++num

と書くこともできます。

どちらもnumを1増やしますが、ほかの処理と組み合わせたときに動きが少し変わります。

今はまず、num++で値を1増やせることを覚えておけば大丈夫です。

比較演算子で値を比べてみよう

2つの値が同じか、どちらが大きいかなどを調べるときは「比較演算子」を使います。

比較した結果は、true(正しい)またはfalse(正しくない)のどちらかになります。

演算子意味
==左右の値が等しい10 == 10
!=左右の値が等しくない10 != 5
>左の値が大きい10 > 5
<左の値が小さい10 < 5
>=左の値が右以上10 >= 10
<=左の値が右以下10 <= 10

実際に値を比べてみよう

新しくComparisonSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class ComparisonSample {

    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 5;

        System.out.println(num1 == num2);
        System.out.println(num1 != num2);
        System.out.println(num1 > num2);
        System.out.println(num1 < num2);
    }

}

実行結果

false
true
true
false

例えば、

num1 > num2

では、「num1はnum2より大きいか?」を比較しています。

今回はnum110num25なので、結果はtrueになります。

反対に、

num1 < num2

は「num1はnum2より小さいか?」という比較なので、結果はfalseになります。

「=」と「==」の違いに注意

「=」と「==」を間違えないようにしよう

===は見た目が似ていますが、意味が違います。

= は、変数に値を代入するときに使います。

int age = 20;

== は、左右の値が等しいか比較するときに使います。

age == 20

STEP2で扱った=は「代入」、今回の==は「比較」です。

ここはJavaを始めたばかりの頃に間違えやすいので、違いを覚えておきましょう。

論理演算子を使ってみよう

複数の条件を組み合わせたいときは、「論理演算子」を使います。

Javaでは、主に次の3つを使います。

演算子意味
&&両方の条件が正しいage >= 20 && age <= 29
||どちらかの条件が正しいage < 20 || age >= 60
!trueとfalseを反対にする!isStudent

&&は、左右の条件が両方ともtrueの場合に、結果がtrueになります。

例えば、

age >= 20 && age <= 29

は、「ageが20以上」かつ「ageが29以下」という2つの条件を組み合わせています。

つまり、ageが20~29の場合にtrueになります。

実際に使ってみよう

新しくLogicalSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class LogicalSample {

    public static void main(String[] args) {
        int age = 25;

        System.out.println(age >= 20 && age <= 29);
        System.out.println(age < 20 || age >= 60);
    }

}

実行結果

true
false

1つ目は、ageが20以上で、さらに29以下かを調べています。

今回はageが25なので、両方の条件を満たしてtrueになります。

2つ目は、ageが20未満、または60以上かを調べています。

25はどちらにも当てはまらないため、falseになります。

「&&」と「||」の違い

「両方」なのか「どちらか」なのかで考えよう

&&は、両方の条件を満たす必要があります。

||は、どちらか一方の条件を満たせばtrueになります。

迷ったときは、

&& → 「○○かつ○○」
|| → 「○○または○○」

と考えると分かりやすくなります。

「!」を使ってみよう

!は、trueとfalseを反対にするときに使います。

例えば、次の変数があるとします。

boolean isStudent = true;

この変数の前に!を付けると、

!isStudent

結果はfalseになります。

trueならfalseに、falseならtrueに変わると覚えておきましょう。

演算子の優先順位

1つの式の中で複数の演算子を使った場合、計算される順番が決まっています。

例えば、次の計算を見てみましょう。

10 + 5 * 2

この場合、左から順番に計算するわけではありません。

掛け算の*が先に計算されるため、

5 * 210

そのあと、

10 + 1020

となります。

そのため、計算結果は20です。

計算する順番を変えたい場合

先に足し算をしたい場合は、( )を使います。

(10 + 5) * 2

( )の中が先に計算されるため、

10 + 515

そのあと、

15 * 230

となります。

計算結果は30です。

実際に確認してみよう

新しくPrioritySampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class PrioritySample {

    public static void main(String[] args) {
        System.out.println(10 + 5 * 2);
        System.out.println((10 + 5) * 2);
    }

}

実行結果

20
30

同じ数字と演算子を使っていても、( )を付ける場所によって計算結果が変わることが確認できます。

計算する順番に迷ったら「( )」を使おう

演算子にはそれぞれ優先順位がありますが、最初からすべて覚える必要はありません。

まずは、

  • ( )の中を先に計算する
  • * / %は、+ -より先に計算する

この2つを覚えておきましょう。

複雑な式では、( )を使って計算する順番を分かりやすくすると、コードも読みやすくなります。

よくある間違い

演算子は記号が似ているものも多いため、書き間違えると意図した結果にならなかったり、エラーになったりします。

よくある間違いを確認しておきましょう。

「=」と「==」を間違える

===は役割が違います。

⚠ 間違えやすいポイント

= → 値を代入する

== → 左右の値が等しいか比較する

例えば、変数に20を代入する場合は、

int age = 20;

値が20と等しいか調べる場合は、

age == 20

と書きます。

int同士の割り算

int同士で割り算をすると、小数部分は切り捨てられます。

10 / 3

この結果は3.333...ではなく、3になります。

小数部分まで扱いたい場合は、doubleなどを使います。

10.0 / 3.0

「&&」と「||」を間違える

複数の条件を組み合わせるときは、どちらを使うのか確認しましょう。

&&両方の条件を満たすとtrue

||どちらかの条件を満たすとtrue

&&は「かつ」、||は「または」と考えると分かりやすくなります。

掛け算・割り算の記号を間違える

Javaでは、普段の計算で使う「×」や「÷」は使用しません。

掛け算 → *

割り算 → /

例えば、10×5を計算する場合は、

計算する順番を間違える

複数の演算子を使う場合は、計算される順番にも注意が必要です。

10 + 5 * 2

この結果は30ではなく20です。

先に足し算をしたい場合は、

(10 + 5) * 2

のように( )を使います。

STEP3のまとめ

このSTEPでは、計算や値の比較などに使う「演算子」について学びました。

最後に、今回のポイントを振り返っておきましょう。

  • + - * / %を使って計算できる
  • int同士の割り算では、小数部分が切り捨てられる
  • +=-=を使うと、計算と代入をまとめて書ける
  • ++で1増やし、--で1減らすことができる
  • == != > < >= <=を使って値を比較できる
  • 比較した結果はtrueまたはfalseになる
  • &&は「かつ」、||は「または」を表す
  • !を使うとtruefalseを反対にできる
  • 演算子には計算される順番があり、( )を使うと順番を分かりやすく指定できる

演算子は、このあとのプログラムでも何度も登場します。

特に、値を比較する==><などは、次のSTEPで学ぶ「条件分岐」でさっそく使います。

ルミィ
ルミィ

STEP3クリア!
演算子は種類が多いけど、全部を一度に覚えなくても大丈夫だよ。
実際に使いながら少しずつ慣れていこう♪

次のSTEPへ

ここまでに、計算に使う演算子だけでなく、

score >= 80

のように、値を比較する演算子も登場しました。

では、この比較結果を使って、

「80点以上なら合格と表示する」

「80点未満なら不合格と表示する」

といったように、条件によって処理を変えるにはどうすればよいでしょうか?

次のSTEPでは、if文を使って条件によって実行する処理を変える方法を学びます。

STEP4「条件分岐を使ってみよう」

記事URLをコピーしました