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 |
^ | べき乗 | 排他的論理和を求める | 5^6 → 3 5⇒101、6⇒110 ※101と110の排他的論理和は011 ⇒3 |
++ | インクリメント | 値に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 |
instanceof | instanceof演算子 | (インスタンスの比較で使用する) 左辺のインスタンスと右辺のインスタンスが同じクラスもしくはサブクラスのインスタンスの場合に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だった場合は右辺は評価しないため問題ありません。