皆さんこんにちは、Taro Techです。
今回はJavaにおける「演算子の使い方」について解説していきます。
演算子は計算・文字列の結合・条件判定等様々な場面で使用されるため、それぞれの記号の使い方をしっかり押さえましょう。
1.演算子とは
演算子とは、データの計算や代入、比較(条件判定)のような演算を行うために用いる記号のことです。
2.演算子の種類
演算子にはいくつかの種類が存在し、それぞれ用途が異なります。
- 算術演算子
- 代入演算子
- 関係演算子
- 論理演算子
- その他の演算子
2-1.算術演算子
算術演算子は主に数値の四則演算に使用されます。さらに、Javaでは数値だけでなく文字列の結合にも使用されます。
演算子 | 意味 | 例(使い方) |
---|---|---|
+ | 加算 | 1 + 2 結果:3 1.0 + 2.0 結果:3.0 ”カレー” + “ライス” 結果:カレーライス |
– | 減算 | 2 – 1 結果:1 3.5 – 1.8 結果:1.7 |
* | 乗算 | 2 * 1 結果:2 2.0 * 3.0 結果:6.0 |
/ | 除算 | 10 / 3 結果:3 10.0/3.0 結果:3.333…(指定したデータ型の範囲で計算) |
% | 剰余算(除算の余り) | 10%3 結果:1 20%5 結果:0 |
Javaでは整数と整数の加算や文字列と文字列の加算のような同じ型同士の足し算だけでなく、異なる型同士で加算を行うこともできます。
加算は基本的に左から行われるため、加算する順番に注意が必要です。
【例文】
①整数+整数+文字列の場合
System.out.println(20 + 20 + "TOKYO");
結果:40TOKYO
②文字列+整数+整数の場合
System.out.println("TOKYO" + 20 + 20);
結果:TOKYO2020
①の場合、
まず左二つの整数同士の足し算が行われるため、40(整数) + “TOKYO”(文字列)になります。
次に40とTOKYOを加算する際に文字列が優先されるため、40という整数を文字列として考えます。
そのため、40という文字列とTOKYOという文字列の加算(文字列の結合)を行って、結果は「40TOKYO」となります。
②の場合、
まず左二つの”TOKYO”(文字列)と20(整数)の加算を行います。この時①で述べたように文字列が優先されるため、TOKYO20(文字列)となります。
次にTOKYO20(文字列)と20(整数)の加算を行うときも文字列が優先されるので、結果は「TOKYO2020」となります。
Javaにおける算術結果は算術を行ったデータの型に依存します。
なお実数と整数を算術するときは実数が優先されます。
【例文】
//整数と整数
5 - 2 結果:3(整数)
3 * 4 結果:12
3 / 4 結果:0(注意)
(本来は0.75になるが、整数同士の演算は結果も整数となるため小数点以下は切り捨てになる)
//実数と実数
5.0 - 2.0 結果:3.0(実数)
3.0 * 4.0 結果:12.0
//整数と実数
5 * 2.0 結果:10.0(実数の型になる)
10.0 / 2 結果:5.0
5 % 2.0 結果:1.0
2-2.代入算術子
代入算術子は、変数に値を代入するときに使用する演算子です。算術演算子と合わせた複合演算子やインクリメント・デクリメント演算子があります。
演算子 | 意味 | 例(使い方) |
---|---|---|
= | 右辺の値を左辺に代入 | int a = 10; String s = “演算子”; |
+= | 右辺の値を左辺に加算した結果を代入 | int a = 10; a +=10; 結果:20(a = a +10;と同じ意味) |
-= | 右辺の値を左辺に減算した結果を代入 | int a = 10; a -=10; 結果:0(a = a – 10;と同じ意味) |
*= | 右辺の値を左辺に乗算した結果を代入 | int a = 10; a *=10; 結果:100(a = a * 10;と同じ意味) |
/= | 右辺の値を左辺に除算した結果を代入 | int a = 10; a /=10; 結果:1(a = a / 10;と同じ意味) |
%= | 左辺を右辺で除算した余りを代入 | int a = 10; a %=10; 結果:0(a = a % 10;と同じ意味) |
++ | 1加算する(インクリメント) | int a = 10; a++; 結果:11(a = a + 1と同じ意味) |
−− | 1減算する(デクリメント) | int a = 10; a−−; 結果:9(a = a – 1と同じ意味) |
2-3.関係演算子
関係演算子とは、比較を行うための二項演算子です。左辺と右辺の比較を行うため、算術結果は真(true)か偽(false)のどちらかとなり算術結果の型はboolean型になります。
関係演算子は主に条件判定に使用されます。
ニュアンスとしては、左辺と右辺が等しいですか?→Yes or Noみたいな感じです。
演算子 | 意味 | 例(使い方) |
---|---|---|
== | 左辺と右辺が等しい | int a = 1; int b = 2; a == b; 結果:false(aとbは等しくない) |
!= | 左辺と右辺が異なる | int a = 1; int b = 2; a != b; 結果:true(aとbは異なる) |
> | 左辺が右辺より大きい | int a = 1; int b = 2; a > b; 結果:false |
>= | 左辺は右辺以上 | int a = 1; int b = 2; a >= b; 結果:false |
< | 左辺は右辺より小さい | int a = 1; int b = 2; a < b; 結果:true |
<= | 左辺は右辺以下 | int a = 1; int b = 2; a <= b; 結果:true |
2-4.論理演算子
論理演算子は、論理演算を行うための演算子です。簡単に言うと各式のtrueとfalseを調べ、全体としてtrueになるかfalseになるかを算出します。関係演算子と同様に主に条件判定で使用されます。
演算子 | 意味 | 例(使い方) |
---|---|---|
&、&& | 論理積(左辺と右辺が両方trueの時のみtrue) | true && false 結果:false |
|、|| | 論理和(左辺と右辺の少なくとも一方がtrueの時はtrue) | true || false 結果:true |
! | 論理否定(trueならfalse、falseならtrueになる) | !true 結果:false |
【例文】
int a = 10;
int b = 20;
int c = 30;
int d = 40;
a < b || c == d
左辺:true, 右辺:false 結果:true
a <= b && c != d
左辺:true, 右辺:true 結果:true
例文のように論理演算子は関係演算子とセットで使われることが多いです。
「&」および「|」は判定結果に関係なく左辺と右辺の両方の判定処理を行ってから後続処理に進むのに対して、
「&&」および「||」は左辺の結果によって全体の結果が決まる場合、右辺の判定処理はスキップします。
int a = 10;
int b = 20;
int c = 30;
int d = 40;
a < b || c == d
左辺がtrueの時点で右辺の結果に関係なく全体の結果はtrueとなるため右辺の判定処理は行われない。
a < b | c == d
左辺の結果に関係なく右辺の判定処理も行われる。
上記のように「||」を用いても「|」を用いても全体の結果は変わりませんが、コンピュータの処理効率を考えると、不要な処理をスキップしてくれる「||、&&」の方が効率の良い記述といえます。
このような演算をショートカット演算と呼びます。
3.演算子の優先度
演算子には優先度があり、一つの式の中に演算子が複数含まれる場合は注意が必要です。
優先度の低い演算から行いたい場合は、()で囲って優先度を上げます。
*上から優先度の高い順に並んでいる
単項演算子 | ++、−−、単項+、単項−、! |
算術演算子 | *、/、%、+、− |
比較演算子 | ==、!= |
論理演算子 | &&、|| |
代入演算子 | =、+=、-=、*=、%= |
コメント