演算子
概要
例
12 % 5
演算結果は12を5で割った余りである2になります。 剰余演算子 %
Javaで使用できる演算子です。
解説
| 分類 | 演算子 | 名称 | 解説 | 例 |
| インクリメント/デクリメント | ++ | インクリメント | インクリメントは値を1増加させることです。 | x++; |
| -- | デクリメント | デクリメントは値を1減少させることです。 | x--; | |
| 算術演算子 | + | 加算演算子 | 加算を行います。 | a + 2; |
| - | 減算演算子 | 減算を行います。 | a - 2 | |
| * | 乗算演算子 | 乗算を行います。 | a * 2 | |
| / | 除算演算子 | 除算を行います。 | a / 2 | |
| % | 剰余演算子 | 剰余を求めます。 | a % 2 | |
| ビット演算子 | & | 論理積演算子 | 論理積を求めます。 | a & 2 |
| | | 論理和演算子 | 論理和を求めます。 | a | b | |
| ^ | 排他的論理和演算子 | 排他的論理和を求めます。 | a % 2 | |
| ~ | 否定演算子 | 否定を求めます。 | a % 2 | |
| シフト演算子 | << | 左シフト | ビット列を左にシフトします。 | a << 3 |
| >> | 符号付右シフト | ビット列を右にシフトします。 | a >> 3 | |
| >>> | 0埋め右シフト | ビット列を右にシフトします。 | a >>> 3 | |
| 比較演算子 | == | イコール | 値が同一か判定する演算子です。 | a == b |
| != | ノットイコール | 値が異なるか判定する演算子です。 | a != b | |
| < | 小なり | 左辺値が右辺値より小さいかどうか比較します。 | a < b | |
| > | 大なり | 左辺値が右辺値より大きいかどうか比較します。 | a > b | |
| <= | 小なりイコール | 左辺値が右辺値以下かどうか比較します。 | a <= b | |
| >= | 大なりイコール | 左辺値が右辺値以上かどうか比較します。 | a >= b | |
| instanceof | インスタンスオブ演算子 | 左辺値が右辺値のインスタンスかどうか判定します。 | a instanceof C | |
| 論理演算子 | && | AND演算子 | 左辺値と右辺値が真かどうか判定します。 | a && b |
| || | OR演算子 | 左辺値と右辺値のいずれかが真かどうか判定します。 | a || b | |
| ! | NOT演算子 | 真偽を反転します。 | !a | |
| 代入演算子 | = | 代入演算子 | 値の代入を行う演算子です。 | a = 2; |
| += | 加算代入演算子 | 加算と代入を同時に行う演算子です。 | a += 3; | |
| -= | 減算代入演算子 | 減算と代入を同時に行う演算子です。 | a -= 3; | |
| *= | 乗算代入演算子 | 乗算と代入を同時に行う演算子です。 | a *= 3; | |
| /= | 除算代入演算子 | 除算と代入を同時に行う演算子です。 | a /= 3; | |
| %= | 剰余代入演算子 | 剰余と代入を同時に行う演算子です。 | a %= 3; | |
| &= | 論理積代入演算子 | 論理積と代入を同時に行う演算子です。 | a &= 3; | |
| |= | 論理和代入演算子 | 論理和と代入を同時に行う演算子です。 | a |= 3; | |
| ^= | 排他的論理和代入演算子 | 排他的論理和と代入を同時に行う演算子です。 | a ^= 3; | |
| <<= | 左シフト代入演算子 | 左シフトと代入を同時に行う演算子です。 | a <<= 3; | |
| >>= | 符号付右シフト代入演算子 | 符号付右シフトと代入を同時に行う演算子です。 | a >>= 3; | |
| >>>= | 0埋め右シフト代入演算子 | 0埋め右シフトと代入を同時に行う演算子です。 | a >>>= 3; | |
| 条件演算子 | ?: | 三項演算子 | 条件を記述できる演算子です。 | a ? b : c |
| 添え字演算子 | [] | 添え字演算子 | 配列にアクセスする演算子です。配列のページを参照 | a[0] |
| ドット演算子 | . | ドット演算子 | クラスやオブジェクトにアクセスする演算子です。 | a.m(); |
| new演算子 | new | new演算子 | インスタンスを生成する演算子です。 | new C(); |
| 順次演算子 | , | 順次演算子 | 前から順に処理を行います。 | a = b,c = d; |
| キャスト演算子 | () | キャスト演算子 | キャストに用いる演算子です。 | (int)a; |
優先順位
演算子は以下の順で処理されます。括弧で変更可能です。
| 優先順位 | 演算子 |
| 高い ↑ ↓ 低い | [] . () ++ -- + ~ ! |
| new キャスト | |
| * / % | |
| + - | |
| << >> >>> | |
| < > <= >= instanceof | |
| == != | |
| & | |
| ^ | |
| | | |
| && | |
| || | |
| ?: | |
| = += -= *= /= %= &= ^= |= <<= >>= >>>= | |
| , |
インクリメント/デクリメント
インクリメントは値を1増加させることです。
デクリメントは値を1減少させることです。
変数の後につけると式の評価を先に行い、変数の前に付けると式の評価を後に行います。
x++ x-- 式の評価を先に行う
++x --x 式の評価を後に行う
例
デクリメントは値を1減少させることです。
変数の後につけると式の評価を先に行い、変数の前に付けると式の評価を後に行います。
x++ x-- 式の評価を先に行う
++x --x 式の評価を後に行う
例
| ソースコード | 実行結果 | 説明 |
|
v1 = 3; System.out.println("v1++ = " + v1++); System.out.println("v1 = " + v1); |
v1++ = 3 v1 = 4 | インクリメントは式の評価後です。 |
|
v1 = 3; System.out.println("v1-- = " + v1--); System.out.println("v1 = " + v1); |
v1-- = 3 v1 = 2 | デクリメントは式の評価後です。 |
|
v1 = 3; System.out.println("++v1 = " + ++v1); System.out.println("v1 = " + v1); |
++v1 = 4 v1 = 4 | インクリメントは式の評価前です。 |
|
v1 = 3; System.out.println("--v1 = " + --v1); System.out.println("v1 = " + v1); |
--v1 = 2 v1 = 2 | デクリメントは式の評価前です。 |
算術演算子
| 演算子 | 説明 |
| + | 左辺値と右辺値を加算します。+に関しては文字列にも使用できます。 |
| - | 左辺値から右辺値を引いた値が演算結果になります。 |
| * | 左辺値に右辺値をかけます。 |
| / | 左辺値を右辺値で割ります。0で除算するとjava.lang.ArithmeticException例外がスローされます。 |
| % | 左辺値を右辺値で割った余りを求めます。 |
例
| ソースコード | 結果 | 説明 | |
|
try{ int a = 5 / 0; } catch(Exception e){ e.printStackTrace(); } | 0での除算を行っています。 |
java.lang.ArithmeticException: / by zero at basic.OperationTest.test1(OperationTest.java:49) at basic.OperationTest.main(OperationTest.java:6) | 0で除算するとjava.lang.ArithmeticException例外がスローされます。 |
演算結果は12を5で割った余りである2になります。 剰余演算子 %
ビット演算子
ビット演算を行う演算子です。
例
| 演算子 | 演算子名 | 説明 |
| & | 論理積 | 論理積(and)を求めます。 |
| | | 論理和 | 論理和(or)を求めます。 |
| ^ | 排他的論理和 | 排他的論理和(xor)を求めます。 |
| ~ | 否定 | 否定(not)を求めます。 |
| 演算子 | ソースコード | 実行結果 | 説明 | |||||||||||||||
| & | System.out.println("12 & 10 = " + (12 & 10)); | 12 & 10 = 8 |
|
|||||||||||||||
| | | System.out.println("12 | 10 = " + (12 | 10)); | 12 | 10 = 14 |
|
|||||||||||||||
| ^ | System.out.println("12 ^ 10 = " + (12 ^ 10)); | 12 ^ 10 = 6 |
|
|||||||||||||||
| ~ | System.out.println("~12 = " + (~12)); | ~12 = -13 |
|
シフト演算子
ビットでシフトを行う演算子です。整数型のみに使用可能です。
| 演算子 | 演算子名 | 説明 |
| << | 左シフト | 左辺値を右辺値の分だけ左シフトします。 |
| >> | 符号付右シフト | 左辺値を右辺値の分だけ右シフトします。符号は保存されます。 |
| >>> | 0埋め右シフト | 左辺値を右辺値の分だけ右シフトします。符号は0になります。 |
比較演算子
比較を行う演算子です。
| 演算子 | 演算子名 | 説明 |
| == | イコール | 左辺値と右辺値が等しいか判定します。参照変数の場合、インスタンスが同一であるかを判定します。 |
| != | ノットイコール | 左辺値と右辺値が異なるか判定します。参照変数の場合、インスタンスが異なるかを判定します。 |
| < | 小なり | 左辺値が右辺値より小さいかどうか比較します。 |
| > | 大なり | 左辺値が右辺値より大きいかどうか比較します。 |
| <= | 小なりイコール | 左辺値が右辺値以下かどうか比較します。 |
| >= | 大なりイコール | 左辺値が右辺値以上かどうか比較します。 |
| instanceof | インスタンスオブ演算子 | 左辺値が右辺値のインスタンスかどうか判定します。 |
論理演算子
| 演算子 | 演算子名 | 説明 |
| && | AND演算子 | 左辺値と右辺値が真かどうか判定します。 |
| || | OR演算子 | 左辺値と右辺値のいずれかが真かどうか判定します。 |
| ! | NOT演算子 | 真偽を反転します。 |
| a | b | a && b | a || b | !a |
| true | true | true | true | false |
| true | false | false | true | |
| false | true | false | true | true |
| false | false | false | false |
代入演算子
代入を行う演算子です。
解説
a += b は
a = a + b と同じです。
| 演算子 | 演算子名 | 説明 |
| = | 代入演算子 | 右辺値を左辺に代入します。 |
| += | 加算代入演算子 | 左辺値+右辺値を左辺に代入します。 |
| -= | 減算代入演算子 | 左辺値−右辺値を左辺に代入します。 |
| *= | 乗算代入演算子 | 左辺値×右辺値を左辺に代入します。 |
| /= | 除算代入演算子 | 左辺値÷右辺値を左辺に代入します。 |
| %= | 剰余代入演算子 | 左辺値を右辺値で割った余りを左辺に代入します。 |
| &= | 論理積代入演算子 | 左辺値と右辺値の論理積を左辺に代入します。 |
| |= | 論理和代入演算子 | 左辺値と右辺値の論理和を左辺に代入します。 |
| ^= | 排他的論理和代入演算子 | 左辺値と右辺値の排他的論理和を左辺に代入します。 |
| <<= | 左シフト代入演算子 | 左辺値を右辺値の分左シフトした値を左辺に代入します。 |
| >>= | 符号付右シフト代入演算子 | 左辺値を右辺値の分右シフトした値を左辺に代入します。 |
| >>>= | 0埋め右シフト代入演算子 | 左辺値を右辺値の分0埋め右シフトした値を左辺に代入します。 |
a += b は
a = a + b と同じです。
三項演算子
書式
条件 ? 条件が成り立つ場合の値 : 条件が成り立たない場合の値
条件式を記述できる演算子です。
a = b ? c : d は以下のソースと同等の意味になります。
if(b){
a = c;
}
else{
a = d;
}
条件 ? 条件が成り立つ場合の値 : 条件が成り立たない場合の値
条件式を記述できる演算子です。
a = b ? c : d は以下のソースと同等の意味になります。
if(b){
a = c;
}
else{
a = d;
}
添え字演算子
配列の各要素にアクセスするための演算子です。
[]
[添え字]
配列のページを参照
ドット演算子
メソッドやフィールドにアクセスするための演算子です。
書式
書式
変数名.メソッド名
メソッドにアクセスする書式です。
変数名.フィールド名 フィールドにアクセスする書式です。
メソッドにアクセスする書式です。
変数名.フィールド名 フィールドにアクセスする書式です。
new演算子
順次演算子
,
処理をカンマで区切ると、前から順に処理を行います。
キャスト演算子
書式
(型)
型の変換に使用します。