演算してみよう

ファイルはzipフォルダに納められています。
解凍ソフト(Aladdin Expander等)を使って解凍して下さい。

算術演算

Javaでは数値データを扱う場合、以下の様な演算子が用意されています。

算術演算子表

算術演算子 演算の種類 一般形
単項の+ 其の侭の値 +オペランド
オペランドとは演算子の左又は右に有って、其の演算を行う為のデータの事
例えば「x+y」では、「x」と「y」がオペランド
単項の- 負の値 -オペランド
+ 足し算 オペランド1+オペランド2
- 引き算 オペランド1-オペランド2
* 掛け算 オペランド1*オペランド2
/ 割り算 オペランド1/オペランド2
% 割り算の余り オペランド1%オペランド2
オペランド2は整数でなければならない

単項演算子とは、オペランドが1つしか無い演算子の事です。

整数同士で割り算を行うと、小数点以下が切り捨てられた整数になります。
此はdouble型の変数に代入しても、小数点以下が切り捨てられた侭の小数になります。

キャスト

int型の合計点と科目数で割り算をして、double型の平均点を求めたい時、

合計点/科目数

では、小数点以下が切り捨てられて終います。
其の為、此の演算を行う一瞬の間だけ合計点の型をdouble型に変更します。
此の様に、一時的に型を変更する演算子をキャストと言います。

(型名)変数名
例: x = (double)i /2;

増分・減分

Javaでは1を加えたり1を減らす為の専用の演算子が用意されています。
此の演算子は、データの数や回数を数える時等に使います。

増分・減分演算子表

演算の種類 一般形 同じ意味の式 式の値
前置き増分 ++E E = E+1 増分後の値
後置き増分 E++ E = E+1 増分前の値
前置き減分 --E E = E-1 減分後の値
後置き減分 E-- E = E-1 減分前の値

式の値とオペランドの値は違う物です。
式の値とは、此の式が別の演算子のオペランドになっている時に、どの様な値で演算が行われるかと言う事です。
例えば、

i = 2;
j = (i++)*3;

と言う式が有った時(「i」「j」は予め宣言されたint型の変数とします)「i++」を行う事で、変数「i」の値は「3」になりますが、掛け算のオペランドとしての「i++」の値は、増分前の「2」で有り、

2*3

が計算されます。
此の場合、演算後の「i」「j」の値は

i = 3
j = 6

になりますが、

i = 2;
j = (++i)*3;

の場合に「++i」の値は増分後の値が使われ、

3*3

が計算されます。
此の場合、演算後の「i」「j」の値は、

i = 3
j = 9

になります。

複合代入演算子

Javaには、代入と演算を組み合わせた演算子が用意されています。

複合代入演算子表

複合代入演算子 演算の種類 一般形 同じ意味の式
+= 足し算した結果を代入 E1 += E2 E1 = E1+E2
-= 引き算した結果を代入 E1 -= E2 E1 = E1-E2
*= 掛け算した結果を代入 E1 *= E2 E1 = E1*E2
/= 割り算した結果を代入 E1 /= E2 E1 = E1/E2
%= 割り算の余りを代入 E1 %= E2 E1 = E1%E2

E1・E2:オペランド

例: i += 2;

累積による加算

幾つかのデータの合計を求める時、以下の様に考えられます。
例えば「10+20+30」を求めたい時、下の図の様に始めに空のビーカーを用意します(つまり変数の初期値を「0」にします)。
此のビーカーに「10」「20」「30」の順にコップの水を加えて行きます。
最後にビーカーに入っている水の量が合計値になります。
此処で重要な事は、始めにビーカーの中が確実に空になっている(「0」の状態です)事です。
始めに何らかの値が入っていたのでは、正しい合計値を求められません。
確実に初期化をする様にして下さい。

ソース ダウンロード
SeisekiCui.java SeisekiCui01.zip
SeisekiCui2.java

演算子の種類

ビット単位の演算子 演算の種類 一般形 意味
& ビット単位のAND E1 & E2 真理値表
A B A&B A|B A^B ~A
AはオペランドE1の中の1ビット
BはオペランドE2の中の1ビット
| ビット単位のOR E1 | E2
^ ビット単位の排他的OR E1 ^ E2
~ ビット単位の補数 ~E1
<< ビット単位の左シフト E1 << E2 E1の各ビットをE2回左にシフト 「例」
1111 1110
↑ <<1
1111 1111
↓ >>1
1111 1111

  >>>1
0111 1111
>> ビット単位の右シフト(左側は最上位ビットで埋める) E1 >> E2 E1の各ビットをE2回右にシフトし、左側のE2ビット分は最上位ビットで埋める
>>> ビット単位の右シフト(左側は0で埋める) E1 >>> E2 E1の各ビットをE2回右にシフトし、左側のE2ビット分は0で埋める

E1・E2:オペランド

ビット単位の複合代入演算子

複合代入演算子 演算の種類 一般形 同じ意味の式
&= ANDを取って代入 E1 &= E2 E1 = E1 & E2
|= ORを取って代入 E1 |= E2 E1 = E1 | E2
^= 排他的ORを取って代入 E1 ^= E2 E1 = E1 ^ E2
<<= 左シフトの結果を代入 E1 <<= E2 E1 = E1 << E2
>>= 右シフトの結果を代入 E1 >>= E2 E1 = E1 >> E2

戻る