演算子 operator

Javaの演算子の主なものを掲げます。

precedence.gif

優先順位 precedence

演算子が2種類現れたとき、どちらを先に処理するかを演算子の優先順位といいます。 たとえば、

2 + 3 * 5
という場合、 3 * 5 を先に計算しますから、 + より * の方が優先順位が 高いといいます。
上記の演算子の表は、上にかかれている演算子のほうが優先順位が高くなっています。

優先順位と異なる順に計算したい場合は、丸カッコを用いて計算順序を明示します。

(2 + 3) * 5

左結合・右結合

同じ優先順位の演算子が2つ(以上)現れたとき、どちらを先に処理するかのルールです。 左側を先に計算する場合を左結合、右側を先に計算する場合を右結合といいます。 通常の演算子は左結合です。 例えば、

a + b - c + d
a - b - c - d + e
p * q * r % s / t
はそれぞれ、下記と同等になります。
((a + b) - c) + d
(((a - b) - c) - d) + e
(((p * q) * r) % s) / t

代入演算子は右結合となります。例えば

a = b = c + 5;
は、下記の順に計算されます。
a = ( b = c + 5 );

前置の単項演算子も右結合です。例えば

- - - a
! ! b
は、それぞれ下記の順に計算されます。
- ( - ( - a ) )
! ( ! b )

ここで問題です。つぎの文を実行すると、DOS画面に何が表示されますか。 答え

int left = 10;
int right = 20;
System.out.println("sum:" + left + right);

単項演算子 unary operator

演算子が1つの項にだけ作用するものを単項演算子といいます。

- a
! ( a < b )     の !
x ++
++ y

上記 x の例のように 項の後に書かれる単項演算子を後置演算子、 y の例のように 前に書かれる単項演算子を前置演算子といいます。

2項演算子 binary operator

2つの項にはさまれ、両側の項の値を使って計算するものを2項演算子といいます。

a + (c - d)
x += 2

&& および || 以外の2項演算子は、 左の項の値を求め、右の項の値を求め、演算子の演算をおこないます。

&& および || については、 「左の項の結果によって、右の項の計算をするかどうか」 が決まります。

&& の左側が false の場合、 右側は計算されずに、結果が false になります。
|| の左側が true の場合、 右側は計算されずに、結果が true になります。
たとえば、
(args.length>0) && (Integer.parseInt(args[0])>0)
といった記述が可能です。

3項演算子

? と : の組合わせを条件演算子といい、3項演算子ともいいます。

式1 ? 式2 : 式3
の形で、式1は boolean 型でなければいけません。 式2 と 式3 の型が異なる場合、 変換可能なものでなければコンパイル・エラーになります。 たとえば、一方が int 他方が double であれば、全体の型は double と 決められます。

まず式1が計算され、 true であれば、 式2の値が全体の値となり、式3は評価されません。式1が false であれば、 式3の値が全体の値となり、式2は評価されません。


Top Page
更新日: