演算子
概要
例
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演算子
順次演算子
,
処理をカンマで区切ると、前から順に処理を行います。
キャスト演算子
書式
(型)
型の変換に使用します。