概要
算術演算子はbyte型~long型などの整数や実数(float型double型)を対象とした演算子で、文字型のcharも演算対象になる。
<単項演算子>
+a | 
正符号、意味はない | 
-a | 
負符号、正負反転 | 
++a | 
参照前インクリメント | 
a++ | 
参照後インクリメント | 
--a | 
参照前デクリメント | 
a-- | 
参照後デクリメント | 
<二項演算子>
a + b | 
加算 | 
a - b | 
減算 | 
a * b | 
乗算 | 
a / b | 
除算 | 
a % b | 
剰余 | 
単項演算子
+:正符号
数値リテラルや数値型変数の前に置く。正数・負数とも符号は変わらず、実質意味を持たない。
| 
					 1 2 3 4 5 6 7 8 9  | 
						int posInt = 2; double posDbl = 3.0; int negInt = -2; double negDbl = -3.0; System.out.println(+posInt); // 2 System.out.println(+negInt); // -2 System.out.println(+posDbl); // 3.0 System.out.println(+negDbl); // -3.0  | 
					
-:負符号
数値リテラルや数値型変数の前に置き、符号を反転させる。
符号演算子の連続
単項演算子は交互に連続して書くことができて、その結果は負符号’-‘が偶数回なら’+‘と同じ、奇数回なら’-‘と同じ結果になる。
ただしその中に--や++のように連続した符号があると、インクリメント/デクリメント演算子と解釈されてエラーになる。
| 
					 1 2  | 
						System.out.println(-+-+-5); // -5 System.out.println(-+--5); // コンパイルエラー:演算 ++/-- の引数が無効ですいいんく  | 
					
++/–:インクリメント/デクリメント
++を変数の直前に書くと「変数が評価される前に」変数の内容が1増加する++を変数の後に書くと「変数が評価された後に」変数の内容が1減少する- 演算子と変数の間に空白が入ってもよい。
 
整数の例
以下の例では、演算子が前置された場合は表示前にインクリメント/デクリメントされ、後置された場合は表示後にインクリメント/デクリメントされる。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13  | 
						int n = 0; System.out.println(++n);  // 1 System.out.println(n++);  // 1 System.out.println(++ n); // 3 System.out.println(n ++); // 3 System.out.println(n);    // 4 n=0; System.out.println(--n);  // -1 System.out.println(n--);  // -1 System.out.println(-- n); // -3 System.out.println(n --); // -3 System.out.println(n);    // -4  | 
					
また、以下の例では二項演算子の項にインクリメント/デクリメント演算子を使った例。
| 
					 1 2 3  | 
						n = 3; int result = n++ + ++n - n--; System.out.println(result+ ", " + n); // 3, 4  | 
					
上記の例をnの変化で表すと以下の様になる。
3(→4) + →5 – 5(→4) = 3(4)
実数の例
実数の場合も++で1.0増加、--で1.0減少になるが、計算誤差が出る。
| 
					 1 2 3 4  | 
						double d = 1.3; System.out.println(++d); // 2.3 System.out.println(--d); // 1.2999999999999998 System.out.println(--d); // 0.2999999999999998  | 
					
char型の例
char型にも適用可能で、インクリメントで1文字進み、デクリメントで1文字戻る。
| 
					 1 2 3 4 5 6 7  | 
						char c = 'ぁ'; System.out.print(++c); System.out.print(++c); System.out.print(++c); System.out.print(--c); System.out.println(); // あぃいぃ  | 
					
二項演算子
四則演算
四則演算は多言語と同じ記号で、整数・実数の関係も同じ。整数同士の演算は整数で桁数が多い方に自動的にキャストされ、2項のうちいずれかでも実数なら結果も実数になる。
+:加算
| 
					 1 2 3  | 
						System.out.println(7 + 2);    // 9 System.out.println(7.0 + 2);  // 9.0 System.out.println(7 + 2.0);  // 9.0  | 
					
-:減算
| 
					 1 2 3  | 
						System.out.println(7 - 2);    // 5 System.out.println(7.0 - 2);  // 5.0 System.out.println(7 - 2.0);  // 5.0  | 
					
*:乗算
| 
					 1 2 3  | 
						System.out.println(7 * 2);    // 14 System.out.println(7.0 * 2);  // 14.0 System.out.println(7 * 2.0);  // 14.0  | 
					
/:除算
| 
					 1 2 3  | 
						System.out.println(7 / 2);    // 3 System.out.println(7.0 / 2);  // 3.5 System.out.println(7 / 2.0);  // 3.5  | 
					
%:剰余
aをbで割った時の剰余(余り)をa % bで与える。実数表現でも整数商に対する剰余が計算される。
| 
					 1 2 3  | 
						System.out.println(7 % 2);    // 1 System.out.println(7.0 % 2);  // 1.0 System.out.println(7 % 2.0);  // 1.0  | 
					
除数・被除数が小数部を持つ場合、整数商に対する剰余が実数で計算される。
| 
					 1 2 3  | 
						System.out.println(5 % 2.5);    // 0.0 System.out.println(5 % 1.5);    // 0.5 System.out.println(5.5 % 1.5);  // 1.0  | 
					
除数・被除数が負数の場合は、商と剰余の以下の式から考える。
 (1)    ![]()
たとえば以下のように。
 (2)    ![]()
| 
					 1 2 3  | 
						System.out.println(-7 % 2);     // -1 System.out.println(7 % (-2));   // 1 System.out.println(-7 % (-2));  // -1  | 
					
ゼロによる除算
整数除算でゼロで割ると実行時例外となる。剰余も除算を行っているので同じ。
| 
					 1 2 3 4 5  | 
						System.out.println(7 % 0); // Exception in thread "main" java.lang.ArithmeticException: / by zero System.out.println(7 % 0); // Exception in thread "main" java.lang.ArithmeticException: / by zero  | 
					
浮動小数点演算の場合にゼロで割ると例外にならず、結果はInfinityとなる。剰余計算の場合は結果はNaN
| 
					 1 2 3  | 
						System.out.println(1.0 / 0);  // Infinity System.out.println(7.0 % 0);  // NaN  | 
					
べき乗
べき乗の演算子はなく、必要ならMathpow()メソッドを使う。
| 
					 1 2 3  | 
						System.out.println(Math.pow(2, 3));   // 8.0 System.out.println(Math.pow(-2, 3));  // -8.0 System.out.println(Math.pow(2, -3));  // 8.0  |