「演算子」は、プログラム中で、様々な計算を行うための記号です。数学でもよく見る「+(プラス)」や「-(マイナス)」も、演算子として出てきます。他にも、Javaのプログラミングでは、様々な演算子が出てきます。
「算術演算子」は、数値の計算を行うための演算子です。算術演算子には、数学の四則演算(足す、引く、掛ける、割る)などを行うための記号が用意されています。
演算子 | 使い方 | 計算内容 |
---|---|---|
+ | a + b | aとbを足す |
- | a - b | aからbを引く |
* | a * b | aとbを掛ける |
/ | a / b | aからbを割る |
% | a % b | aからbを割った余り |
算術演算子には、少し特殊なものが用意されています。変数の中の値を1増やす「++」と、1減らす「--」です。
この算術演算子は、2つの値の結果を計算するのではなく、変数の値そのものに作用します。
int a = 0; // 変数aの中身は0 a ++; // 変数a(中身は0)は1増えて1になる a ++; // 変数a(中身は1)は1増えて2になる a ++; // 変数a(中身は2)は1増えて3になる a --; // 変数a(中身は3)は1減って2になる System.out.println(a); // 「2」と出力
こういった変数の中身を1増やす処理を「インクリメント」と呼びます。また1減らす処理を「デクリメント」と呼びます。
こういった計算方法は、今後出てくる「ループ処理」という、何度も繰り返す処理で多用するようになります。1ずつ値を変えて、処理を行う目的で、これらの演算子は利用されます。
「++」と「--」の演算子は、変数の前に書くか後で書くかによって処理のされ方が変わります。
変数の前に書いた場合は、先に1が加算/減算された後に、変数の値が利用されます。
変数の後に書いた場合は、変数の値が利用された後に、1が加算/減算されます。
以下、その計算の様子が分かる実例です。
int a = 2; int b = 3; int c = a++ * ++b; ↓ ┏━┓ ┃ ┠─変数aは2。計算に使った後、変数aを1増やす。 ┃ ┃ なので、計算の時点では2のまま。 ┃ ┃ ┃2 ┃* ++b; ┗━┛ ↓ ┏━┓ ┃ ┠─まず変数bを1増やす。 ┃ ┃ 変数bは4。この値を使う 2 * ┃4 ┃; ┗━┛ ↓ ┏━┓ ┃ ┠─最終的な答え。 ┃8 ┃; ┗━┛
int a = 2; int b = 3; int c = a++ * ++b; System.out.println(a); // 「3」と出力 System.out.println(b); // 「4」と出力 System.out.println(c); // 「8」と出力
演算子には、どちらが先に計算されるかという「優先順位」があります。
優先順位に従って計算が行われる様子を示します。
int a = 4 + 3 * 2 - 1; ↓ 4 + 6 - 1; ↓ 10 - 1; ↓ 9;
int a = 4 + 3 * 2 - 1; System.out.println(a); // 「9」と出力
まだ紹介していない演算子を含めて、優先順位の表を示しておきます。
優先順位 | 演算子 | 意味 |
---|---|---|
高い ↑ ↓ 低い |
(引数) [配列添字] . x++ x-- |
メソッドの引数 配列の添字 オブジェクトの階層の区切り 算術演算子 |
++x --x +x -x ~ ! |
算術演算子 単項演算子(正負の符号) ビット演算子 論理演算子 | |
new 型 x (型) |
オブジェクト生成 キャスト | |
* / % | 算術演算子 | |
+ - | 算術演算子 | |
<< >> >>> | シフト演算子 | |
< > <= >= instanceof |
比較演算子 | |
== != | 比較演算子 | |
& | ビット演算子かつ論理演算子 | |
^ | ビット演算子かつ論理演算子 | |
| | ビット演算子かつ論理演算子 | |
&& | 論理演算子 | |
|| | 論理演算子 | |
? : | 条件演算子 | |
= += -= *= /= %= &= |= ^= <<= >>= >>>= |
代入演算子 |
優先順位とは違う順番で計算を行いたい場合は、数学の計算と同じように「( )」を利用します。
以下、「( )」を利用した計算の例を示します。
int a = (4 + 3) * (2 - 1); ↓ 7 * 1; ↓ 7;
int a = (4 + 3) * (2 - 1); System.out.println(a); // 「7」と出力