値を計算したり、値を比較するには演算子を使う。ここではJavaの演算子について解説する。
演算子 | 説明 |
---|---|
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
演算子 | 説明 |
---|---|
== | 等しい |
!= | 等しくない |
< | 小さい |
<= | 以下 |
> | 大きい |
>= | 以上 |
instanceof | オブジェクトが別のオブジェクトのインスタンスかどうか |
instanceof 演算子は、指定クラスのインスタンスかどうかを調べる演算子で、true か false が返されます。
インスタンス名 instanceof クラス名
instanceof 演算子を使用したJavaソースコードの例を次に示します。
String a = new String();
if ( a instanceof String ) {
System.out.println("a は String のインスタンスです。");
} else {
System.out.println("a は String のインスタンスではありません。");
}
Java には以下に示す論理演算子(ブール演算子)がある。
演算子 | 説明 |
---|---|
&& | 論理積 (AND) |
|| | 論理和 (OR) |
^ | 排他的論理和 (XOR) |
! | 否定 (NOT) |
Javaにおける論理積(AND)論理演算子
式 | 値 |
---|---|
true && true | true |
true && false | false |
false && true | false |
false && false | false |
Javaにおける論理和(OR)論理演算子
式 | 値 |
---|---|
true || true | true |
true || false | true |
false || true | true |
false || false | false |
Javaにおける否定(NOT)論理演算子
式 | 値 |
---|---|
! true | false |
! false | true |
演算子 | 説明 |
---|---|
<< | 左シフト |
>> | 算術右シフト(符号あり右シフト) |
>>> | 論理右シフト(符号なし右シフト) |
<< 演算子は、被演算子の値を指定されたビット数だけ左へシフトします。 >> 演算子は、被演算子の値を指定されたビット数だけ右へ算術シフトします(符号あり)。 >>> 演算子は、被演算子の値を指定されたビット数だけ右へ論理シフトします(符号なし)。
次の例は、1を2ビット左へシフト(つまり4倍)した値を変数
x
に代入します。
x = 1 << 2;
演算子 | 説明 |
---|---|
= | 代入 |
+= | 加算値を代入 (a += b はa = a + b と同じ)
|
-= | 減算値を代入 (a -= b はa = a - b と同じ)
|
*= | 乗算値を代入 (a *= b はa = a * b と同じ)
|
/= | 除算値を代入 (a /= b はa = a / b と同じ)
|
%= | 剰余値を代入 (a %= b はa = a % b と同じ)
|
<<= | 左シフトした値を代入 (a <<= b はa = a << b と同じ)
|
>>= | 算術右シフト(符号あり右シフト)した値を代入 (a >>= b はa = a >> b と同じ)
|
>>>= | 論理右シフト(符号なし右シフト)した値を代入 (a >>>= b はa = a >>> b と同じ)
|
&= | ビット論理積(AND)の値を代入 (a &= b はa = a & b と同じ)
|
|= | ビット論理和(OR)の値を代入 (a |= b はa = a | b と同じ)
|
^= | ビット排他的論理和(XOR)の値を代入 (a ^= b はa = a ^ b と同じ)
|
三項演算子とは、被演算子を3つとる演算子のことである。英語では「ternary operator」という。Javaでは三項演算子を次のように記述する。
条件式 ? 値1 : 値2
条件式が真であれば値1が評価され、条件式が偽であれば値2が評価される。たとえば、三項演算子は次のように使う。
max = (a > b ? a : b);
a
の値が b
の値より大きければ max = a
が実行され、a
の値が b
の値以下であれば max = b
が実行される。
三項演算子を使った式を、if文を使って表現すると次のようになる。
if (a > b) {
max = a;
} else {
max = b;
}
カンマで区切られた複数の式を左から順に実行します。
a = 1, b = 2;
順次演算子は、for文で使われることが多いです。
for (i = 0, j = 0; i > 0; i--)
演算子には優先順位があります。次に演算子の優先順位を示します。
優先順位 | 演算子の種類 | 演算子 | ||
---|---|---|---|---|
高い ↑ ↓ 低い |
式 | () [] . | ||
単項演算子 | ! ~ ++ - (cast) | |||
2項演算子 | インスタンス | instanceof | ||
剰余 | * / % | |||
加減 | + - | |||
シフト | << >>> >> | |||
比較 | < <= > >= | |||
等値、非等値 | == != | |||
ビット演算子 | 論理積 | & | ||
排他的論理和 | ^ | |||
論理和 | | | |||
論理積 | && | |||
論理和 | || | |||
3項演算子 | ? : | |||
代入演算子、複合代入演算子 | = += -= *= /= %= <<= >>>= >>= &= ^= |= | |||
順次演算子 | , |
同順位の演算子が並んだ場合、原則として左にあるものから評価されます。ただし、単項演算子および代入演算子、複合代入演算子は、右にあるものから評価されます。
演算子は括弧で囲んだ式が優先されます。たとえば、次の2つの式は演算結果が異なります。
x = 1 + 2 * 3;
y = (1 + 2) * 3;
上記の式の場合、x の値は7、yの値は9になります。