Javaちょこっとリファレンス
HOME > JAVAの演算子

JAVAの演算子

Javaで使われる主要な演算子集です。

算術演算子

算術演算子は、計算をするための演算子です。

インクリメントとデクリメントについては、変数の前につけるか後ろにつけるかで動作が少し異なりますので違いを理解しておきましょう。→こちらで解説しています。

演算子名称意味
+足す値を加算する。(a+b)2+3 → 5
-引く値を減算する。(a-b)2-3 → -1
*掛ける値を掛ける。(a×b)2*3 → 6
/割る値を割る。(a÷b)1/2 → 0.5
%余り値を割った余りを求める。(…)3%2 → 1
^べき乗値を乗算する。(ab2^3 → 8
++インクリメント値に1を加算する。(a+1)2++ → 3
--デクリメント値に1を減算する。(a-1)2-- → 1

代入演算子

代入演算子は、変数への値の代入を行う演算子です。「=」以外は代入と計算を同時に行います。

演算子名称意味
=代入値を代入するi=2
+=加算代入a+=b は a=a+b と同じ意味2+=3 → 5
-=減算代入a-=b は a=a-b と同じ意味2-=3 → -1
*=乗算代入a*=b は a=a*b と同じ意味2*=3 → 6
/=除算代入a/=b は a=a/b と同じ意味1/=2 → 0.5
%=余り代入a%=b は a=a%b と同じ意味3%=2 → 1

3項演算子

3項演算子はIF文の簡略形と考えれば分かりやすいです。
IF文についてはこちらを参照ください。

演算子名称意味
? :3項演算1項目がtrueなら2項目を、falseなら3項目を返す。
3項演算サンプル
boolean b = false;
String str = b?"真です。":"偽です。"

str → 偽です。

比較演算子

比較演算子は、2つの値を比較してboolean値で結果を戻す演算子です。

演算子名称意味
<小なり左辺が右辺よりも小さい5<5 → false
<=小なりイコール左辺が右辺よりも小さいか等しい5<=5 → true
>大なり左辺が右辺よりも大きい5>5 → false
>=大なりイコール左辺が右辺よりも大きいか等しい5>=5 → true
==等しい左辺と右辺が等しい5==5 → true
!=等しくない左辺と右辺が異なる5!=5 → false
instanceofinstanceof演算子(インスタンスの比較で使用する)
左辺のインスタンスと右辺のインスタンスが同じクラスもしくはサブクラスのインスタンスの場合にtrueを返す
instanceofサンプル
ArrayList a = new ArrayList();
ArrayList b = new ArrayList();
List c = new List();
Date d = new Date();

a instanceof b    //同じクラスのインスタンス
→ true

a instanceof c    //サブクラスクラスのインスタンス
→ true

a instanceof d    //違うクラスのインスタンス
→ false

論理演算子

論理演算子は、1つ以上のboolean値を評価して結果をboolean値で戻す演算子です。

演算子名称意味
&論理積(AND)左辺と右辺が両方ともtrueの場合にtrueを返す。
(左辺がfalseの場合でも右辺を評価する。)
&&論理積(AND)左辺と右辺が両方ともtrueの場合にtrueを返す。
(左辺がfalseの場合は右辺は評価しない。)
|論理和(OR)左辺と右辺のどちらかがtrueの場合にtrueを返す。
(左辺がtrueの場合でも右辺を評価する。)
||論理和(OR)左辺と右辺のどちらかがtrueの場合にtrueを返す。
(左辺がtrueの場合は右辺は評価しない。)
!否定(NOT)trueの場合はfalse、falseの場合はtrueを返す
^排他的論理和
(XOR)
左辺と右辺が異なる場合にtrueを返す

★&と&&の違いですが、共に「左辺と右辺が両方ともtrueの場合にtrueを返す」ということは、左辺がfalseであったら右辺は評価するまでも無くfalseになるということです。
こうした場合でも、右辺を評価するのが &、右辺を評価しないのが&&です。


★同様に|と||の違いですが、共に「左辺と右辺のどちらかがtrueの場合にtrueを返す」ということは、左辺がtrueであったら右辺は評価するまでも無くtrueになるということです。
こうした場合でも、右辺を評価するのが |、右辺を評価しないのが||です。


「&と&&」、「|と||」は、特別な理由が無い限り、「&&・||」 を使用したほうがいいです。

&&を使わないと不具合を起こすサンプル
//val(String型)がnullでも空でもないという判定を行う場合…

(val != null & val.equals(""))
→&を使ってしまうと、nullだった場合にNullPointerExceptionが発生してしまいます。

(val != null && val.equals(""))
→&&を使えば、nullだった場合は右辺は評価しないため問題ありません。

Java基本カテゴリ

HOMEへ戻る TOPへ戻る