プログラミング

【Java初心者向け】演算子マスターになろう!算術演算子、比較演算子から三項演算子など応用まで

プログラミング
この記事は約6分で読めます。
Sponsored Links

演算子とは

アルファベット, おもちゃ, ゲーム

まずは演算子について学習していきましょう。

演算子というと足し算、引き算などを思い浮かべる人が多いかと思いますが、Javaにはそれ以外にもたくさんの演算子が存在します。

今回は8つの演算子を紹介していきます。少し数が多いですが、慣れてくるので少しずつ押さえていきましょう!

演算子の種類

tumblrの壁紙, アート, イラスト

①算術演算子

演算子使用例意味
+a + ba に b を加える
a – ba から b を引く
*a * ba に b を掛ける
/a / ba を b で割る
%a % ba を b で割った余り

まずは算術演算子です。算術演算子は小学校で習う足し算や引き算などが該当します。少し違うのは割り算の余りの表し方と掛け算の記述方法です。

「%」「3の倍数を表しなさい。」など、余りによって判定したい時に使用される事が多いです。「12 % 3 = 0」となるので12は3の倍数となるという風に使われます。しっかりと慣れていきましょう。

②マイナス演算子

演算子使用例意味
+b * +aaの正負をそのまま
b * -aaの正と負を反転

次に紹介するのはマイナス演算子です。一見、算術演算子のように見えますが、正負を反転させる事ができます。使用例をしっかり見て、違いを理解しておきましょう。

これも小学校の学習で直感的に理解する事ができるので、それほど抵抗がない人が多いでしょう。

③代入演算子

演算子意味
=代入
+=自己加算して代入
-=自己減算して代入
*=自己乗算して代入
/=自己除算して代入
%=あまりを計算して代入

次に紹介するのは代入演算子です。「=」と聞くと「同じという意味じゃないの?」と思う人も多いかと思いますが、Javaにおいて「=」は同じという意味ではなく、「右辺を左辺に代入する」という意味になります。

「+=」は、「a = a + 1」などの式を表しています。1の部分は好きな値に変える事ができ、「a = a+1」を短縮して書きたい場合は「+=」を使用します。他の式も同様です。実際に使ってみて慣れるようにしてくださいね!

④比較演算子

演算子使用例意味
<a < ba は b よりも小さい
<=a <= ba は b よりも小さいか等しい
>a > ba は b よりも大きい
>=a > ba は b よりも大きいか等しい
==a == ba と b は等しい
!=a != ba は b は等しくない
instanceofa instanceof b参照型変数a が bクラス/インターフェース/配列のインスタンスかどうか

次に比較演算子について学習していきましょう。数値の比較や条件式などでよく使われます。 

注意したいのが参照型の比較の場合です。参照型の文字内容の比較は==で行うことはできません。==で比較してしまうと参照先が同じかどうかを比較してしまうからです。「参照先???」と思った人はまずはデータ型について学習するようにしてくださいね!

⑤論理演算子

演算子使用例意味
&&a && ba と b が共にtrueの時にtrue
||a || ba か b の少なくとも1つがtrueの場合にtrue
!!aa がtrueの場合にfalse、a がfalseの場合にtrue
|a | ba か b の少なくとも1つがtrueの場合にtrue
&a & ba と b が共にtrueの時にtrue

&&や||は左に記述したものがfalseの場合は右の評価はおこないません。逆に&や|の場合は左側がfalseになっても、右側の判定も行います。&&や||は利用頻度が多いのですが、しっかりとどういった処理が行われてるかのイメージを持って使用するようにしてくださいね!

⑥インクリメント演算子とデクリメント演算子

演算子使用例意味
++a;aに1足してから計算する
a++;aに1足す前に計算して、計算後に1足す
–a;aから1引いて計算する
a–;aから1引く前に計算して、計算後に1足す

++aや–aを前置インクリメントといい、a++やa–を後置インクリメントと言います。前置インクリメントと後置インクリメントは似ているようで挙動が全く違っています。例えば以下のような式があった場合です。

//後置インクリメントの場合
int a = 10;
int b = 15;

a = b++;

System.out.println(a);

この式を実行すると、10が出力さえれます。後置インクリメントでは代入が先に行われて、その後に計算が行われるからです。

//前置インクリメントの場合
int a = 10;
int b = 15;

a = ++b;

System.out.println(a);

一方、前置インクリメントの場合は計算後に代入が行われるため上記のコードを実行すると16と出力されます。このように後置インクリメントと前置インクリメントでは挙動が変わってくるのでしっかり押さえて使うようにしましょう。

⑦三項演算子

val = 真偽値式 ? trueの場合:falseの場合

次に紹介するのは参考演算子です。参考演算子はif文に近い考え方があり、ネストする(入れ子構造にする)こともできます。

?の後ろに:を挟んで処理内容を記述します。trueの場合は左がfalseの場合は右が実行されます。

⑧シフト演算子

演算子使用例意味
<<a << 数値a を 左へ3ビットシフト
>>a >> 数値a を 右へ3ビットシフト(符号有り)
>>>a >>> 数値a を 右へ3ビットシフト(符号無し)

シフト演算子は桁数を操作する演算子です。例えば10進数の場合、10を右へ1ビットシフトすると(10 << 1)100になります。このような操作を行うのがシフト演算子です。

右シフトの場合は符号有りと符号無しの2種類があります。符号ありの場合は元の符号をそのままにしておくという意味です。逆に符号無しの場合は元の値が正であろうが負であろうが演算を行うと正の値になります。

演算子同士の優先順位

アート, アート素材, カラフル

次に演算子同士の優先順位を押さえていきましょう。これは試験などでも出題されるので、しっかり覚えて計算ができるようにしておいてくださいね!特に、インクリメントの順番と足し算割り算の順番などは頻出です。

演算子
[] . 後置インクリメントデクリメント(x++, x–)
前置インクリメントデクリメント(++x, –x) +x ~ !
new キャスト((型)x)
* / %
+ –
シフト演算子(<< >> >>>)
比較演算子(< > <= >= instanceof)
== !=
&
|
&&
||
三項演算子(?:)
代入演算子(= += -= *= /= %= &= ^= != ) シフト演算子と代入演算子の組み合わせ(<<= >>= >>>=)

最後に

演算子だけでも数多くの種類が存在します。実践ではあまり出てこないけど知識的に知っておいた方がいいものや実践で頻出のものなど様々なものがあります。特にインクリメントデクリメントの挙動などは馴染みづらいですが、理解せずに使っていると初心者感が丸出しになってしまします。

しっかり理解して使うようにしましょう。

タイトルとURLをコピーしました