演算してみよう ファイルはzipフォルダに納められています。
解凍ソフト(Aladdin
Expander等)を使って解凍して下さい。
算術演算 Javaでは数値データを扱う場合、以下の様な演算子が用意されています。 算術演算子表
算術演算子 |
演算の種類 |
一般形 |
単項の+ |
其の侭の値 |
+オペランド
オペランドとは演算子の左又は右に有って、其の演算を行う為のデータの事
例えば「x+y」では、「x」と「y」がオペランド |
単項の- |
負の値 |
-オペランド |
+ |
足し算 |
オペランド1+オペランド2 |
- |
引き算 |
オペランド1-オペランド2 |
* |
掛け算 |
オペランド1*オペランド2 |
/ |
割り算 |
オペランド1/オペランド2 |
% |
割り算の余り |
オペランド1%オペランド2
オペランド2は整数でなければならない | 単項演算子とは、オペランドが1つしか無い演算子の事です。 整数同士で割り算を行うと、小数点以下が切り捨てられた整数になります。
此はdouble型の変数に代入しても、小数点以下が切り捨てられた侭の小数になります。 キャスト int型の合計点と科目数で割り算をして、double型の平均点を求めたい時、 では、小数点以下が切り捨てられて終います。
其の為、此の演算を行う一瞬の間だけ合計点の型をdouble型に変更します。
此の様に、一時的に型を変更する演算子をキャストと言います。
増分・減分 Javaでは1を加えたり1を減らす為の専用の演算子が用意されています。
此の演算子は、データの数や回数を数える時等に使います。 増分・減分演算子表
演算の種類 |
一般形 |
同じ意味の式 |
式の値 |
前置き増分 |
++E |
E = E+1 |
増分後の値 |
後置き増分 |
E++ |
E = E+1 |
増分前の値 |
前置き減分 |
--E |
E = E-1 |
減分後の値 |
後置き減分 |
E-- |
E = E-1 |
減分前の値 | 式の値とオペランドの値は違う物です。
式の値とは、此の式が別の演算子のオペランドになっている時に、どの様な値で演算が行われるかと言う事です。
例えば、 と言う式が有った時(「i」「j」は予め宣言されたint型の変数とします)「i++」を行う事で、変数「i」の値は「3」になりますが、掛け算のオペランドとしての「i++」の値は、増分前の「2」で有り、 が計算されます。
此の場合、演算後の「i」「j」の値は になりますが、 の場合に「++i」の値は増分後の値が使われ、 が計算されます。
此の場合、演算後の「i」「j」の値は、 になります。 複合代入演算子 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:オペランド 累積による加算 幾つかのデータの合計を求める時、以下の様に考えられます。
例えば「10+20+30」を求めたい時、下の図の様に始めに空のビーカーを用意します(つまり変数の初期値を「0」にします)。
此のビーカーに「10」「20」「30」の順にコップの水を加えて行きます。
最後にビーカーに入っている水の量が合計値になります。
此処で重要な事は、始めにビーカーの中が確実に空になっている(「0」の状態です)事です。
始めに何らかの値が入っていたのでは、正しい合計値を求められません。
確実に初期化をする様にして下さい。 演算子の種類
ビット単位の演算子 |
演算の種類 |
一般形 |
意味 |
& |
ビット単位のAND |
E1 & E2 |
真理値表
A |
B |
A&B |
A|B |
A^B |
~A |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
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 | 戻る |