演算子 operator
Javaの演算子の主なものを掲げます。
優先順位 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
更新日: