〜演算子〜

演算子とはプログラムの中で数値計算、比較などを行うために使う記号のことである。

以下で演算子について説明する。ただし、ビット演算子、シフト演算子、型比較演算子instanceofについては取り扱わない。


算術演算子

算術演算子は四則演算などの基本的な演算を行うための演算子である。

算術演算子には以下の5種類がある。
演算子 意味 使い方 使用例 演算結果
+ 加算 x + y 10 + 3 13
- 減算 x - y 10 - 3 7
* 乗算 x * y 10 * 3 30
/ 除算 x / y 10 / 3 3
% 剰余 x % y 10 % 3 1
x、yは評価した結果がboolean型を除くプリミティブ型である式を表す。

【注意】x、yが両方整数型の場合、結果はint型になる。
例えば除算の例の10/3の結果は3.33333…にはならず、小数点以下が切り捨てられて結果は3となる。
もし、10.0/3、10/3.0、10.0/3.0とした場合、計算結果はdouble型になる(3.3333333333333335)。

インクリメント演算子・デクリメント演算子

インクリメント演算子とは変数の値を1増やすもので、デクリメント演算子は変数の値を1減らすものである。
演算子名前使い方説明
++インクリメントx++xの値を返してから、xを1増やす
++xxを1増やしてから、値を返す
--デクリメント x--xの値を返してから、xを1減らす
--xxを1減らしてから、値を返す
xはboolean型を除くプリミティブ型の変数を表す。

インクリメント演算子とデクリメント演算子は変数の前に置く場合と後に置く場合がある。
この2つの違いは値を返す(評価する)タイミングが違うところである。

例:変数の前にインクリメント演算子を付けた場合
	int x = 10;
	int y = ++x;
この場合、xの値は11、yの値も11となる。
これは「++x」のようにインクリメント演算子を変数の前に付けた場合は、変数の値を1増やしてから値を返すからである。
つまり、2行目ではxの値に1足した後に、その値をyに代入している。

例:変数の後にインクリメント演算子を付けた
	int x = 10;
	int y = x++;
この場合、xの値は11、yの値は10となる。
これは「x++」のようにインクリメント演算子を変数の後に付けた場合は、値を返してから式の値を1増やすからである。
つまり、2行目ではxの値をyに代入した後にxの値に1を足している。


比較演算子

比較演算子は2つの式を比較する演算子である。そして、その結果をboolean型の値(trueまたはfalse)として返す。
演算子 意味 使い方 説明
< 小なり x < y xがyより小さい場合trueを返す。
それ以外の場合はfalseを返す。
<= 小なりイコール x <= y xがyより小さいか等しい場合trueを返す。
それ以外の場合はfalseを返す。
> 大なり x > y xがyより大きい場合trueを返す。
それ以外の場合はfalseを返す。
> = 大なりイコール x >= y xがyより大きいか等しい場合trueを返す。
それ以外の場合はfalseを返す。

x、yは評価した結果がboolean型を除くプリミティブ型である式を表す。

演算子 意味 使い方 説明
== 等しい x == y xとyが等しい場合trueを返す。
それ以外の場合はfalseを返す。
!= 等しくない x != y xとyが等しくない場合trueを返す。
それ以外の場合はfalseを返す。
x、yは評価した結果がプリミティブ型同士、又は参照型同士である式を表す。

【注意】String型の文字列の比較をする場合には==を使用しても正しい結果を得ることができない場合がある。
【詳細は「基本的なプログラミング」の「変数(参照型)」を参照】

論理演算子

論理演算子は式の評価がboolean型の式に対して使う演算子である。
また、比較演算子は結果がboolean型になるため論理演算子と組み合わせて使うことで、より複雑な条件を記述することができる。
演算子意味使い方説明
&かつx & yxとyの両方がtrueの場合、trueを返す(yを必ず評価する)。
それ以外の場合はfalseを返す。
&&かつx && yxとyの両方がtrueの場合、trueを返す(xがtrueの場合のみyを評価する)。
それ以外の場合はfalseを返す。
|またはx | yxまたはyがtrueの場合、trueを返す(yを必ず評価する)。
それ以外の場合はfalseを返す。
||またはx || yxまたはyがtrueの場合、trueを返す(xがfalseの場合だけyを評価する)。
それ以外の場合はfalseを返す。
!ではない!xxの値を反転して返す(xがtrueの場合はfalseを、xがfalseの場合はtrueを返す)。
x、yは評価した結果がboolean形の式を表す。

【注意】比較演算子のうち、「&&」と「 || 」はショートカット演算子とも呼ばれる。
「&」と「|」は必ず両方の式が評価されるが、ショートカット演算子は最初に左の式が評価され、右の式は必要な場合にのみ評価される。
ショートカット演算子を使うことでプログラムが軽くなるが、ショートカット演算子の右側に式の値が変わったりする処理がある場合にはその処理が行われないことがあるので注意が必要である。

代入演算子

代入演算子は代入を行う際に使用される演算子である。
演算子意味使い方説明
=代入x = yyを評価してxに代入する。
代入した結果を値として返す。
xは変数、yは式を表す。

代入演算子「=」は、xに代入した結果を値として返す。
この性質を利用することで1つの文で複数の変数に同じ値を設定することができる。

例:以下の@とAの2つの処理は同じ働きをする
   @x = 11; y = 11; z = 11;
   Ax = y = z = 11;
この他にも代入演算子と他の演算子を組み合わせることで、演算を代入を同時に行うこともできる。
このような演算子を複合代入演算子と呼ぶ。

複合代入演算子

演算子意味使い方説明複合代入演算子を使わない記述
+=加算して代入x += yx+yを計算してから、xに結果を代入x = x + y
-=減算して代入x -= yx-yを計算してから、xに結果を代入x = x - y
*=乗算して代入x *= yx*yを計算してから、xに結果を代入x = x * y
/=除算して代入x /= yx/yを計算してから、xに結果を代入x = x / y
%=剰余を代入x %= y、xにx/yの剰余を代入x = x % y
x、yは評価した結果がboolean形の式を表す。

文字列連結演算子

演算子「+」には加算以外に、文字列を連結するという働きがある。
演算子意味使い方説明使用例結果
+文字列連結x + yxとyを文字列として連結する。"eiko" + 11eiko11
x、yのどちらかは評価した結果がString型になる式を表す。

Javaではx、yのどちらか(または両方)がString型の場合には、演算子「+」を文字連結演算子として解釈する。
このときString型でないものは自動的にString型として連結される。

条件演算子

条件演算子はある式の真偽値(trueまたはfalse)に基づいて、他の2つの式のどちらかの評価を行う演算子である。
演算子 使い方 説明 使用例
?: x ? y : z xがtrueの場合、yを評価して返す。
xがfalseの場合、zを評価して返す。
( a % 2 ) == 0 ? "even" : "odd"
a/2の余りが0の時は「even」を返し、0でない時は「odd」を返す。
if文を用いて書き直すと、
if( a % 2 == 0){
  return "even";
}else{
  return "odd";
}
となる。
x、yは評価した結果がboolean型の式を表す。