Javaの算術演算子(四則演算)を極める!余りの計算やシフト演算も覚える。
この記事では、Javaでの計算方法やそのために使用する演算子について勉強していく。
学校で習った数学と共通する部分もあるが、プログラミングならではの気をつけておきたい事柄も多くある。この記事では、前半では初めてプログラミングをする初心者でもわかる内容を、後半ではより応用的な事柄を説明していくので、必要な部分を実際にコードを書きながら読んでいってほしい。
Javaの演算子一覧
まずはJavaで使用する演算子を一覧で確認しよう。
「演算子」とはプログラム内で使われる指示記号のことで、Javaでは以下のような演算子を使用することができる。
種類 | 役割 | 記号 |
---|---|---|
比較演算子 | 比較 | <, >, <=, >= |
等式 | ==, != | |
論理演算子 | 論理和・論理積・否定 | &&, ||, ! |
三項演算子 | 条件 | ? : |
算術演算子 | 計算 | +, -, *, /, % |
単項演算子 | インクリメント | var++, ++var |
デクリメント | var–, –var | |
数値変換 | +var, -var | |
シフト演算子 | シフト | <<, >>, >>> |
ビット演算子 | 論理和・論理積・ 排他的論理和・否定 | & ,| ,^,~ |
代入演算子 | 代入 | =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= |
算術演算子の使い方
では、Javaにおける算術演算子の使い方を確認しよう。
足し算・引き算・掛け算・割り算
まずは足し算・引き算といった算数の授業で習ったような計算式について記述を確認しよう。
// 足し算
System.out.println("足し算 5 + 4 = " + (5 + 4));
// 引き算
System.out.println("引き算 12 - 8 = " + (12 - 8));
// 掛け算
System.out.println("掛け算 5 × 4 = " + (5 * 4));
// 割り算
System.out.println("割り算 25 ÷ 5 = " + (25 / 5));
掛け算と割り算を示す記号が、日本の数式記述と異なる点に気を付けよう。
結果が小数点を含む割り算
割り算の結果が小数点を含む場合、使用している変数のデータ型に注意しなければならない。
int型においては、小数点を含む数値は格納できず、小数点以下は切り捨てられる。
// intで割り算した場合は少数点は切り捨てられる
System.out.println("割り算(少数点切り捨て) 26 ÷ 4 = " + (26 / 4));
// doubleで割り算した場合は少数点は含む
System.out.println("割り算(少数点含む) 26d ÷ 4d = " + (26d / 4d));
割り算の余りの求め方
プログラミングにおいては割り算の余りを求める計算よく使われる。
割り算をした結果の余りを求めるには「%(パーセント記号)」を使用する。
System.out.println(17 % 3); // 2が出力される
17割る3の余りは2なので2が出力される。
これを応用して下のようなコードを書けば、交互にTRUE・FALSEを出力するコードが書ける。
表の偶数行のみ背景の色を変えたい場合などにこの計算を利用できる。
for (int i = 0; i < 12; i++) {
System.out.println(i % 2);
}
インクリメントとデクリメント
インクリメントとデクリメントはプログラミングでよく使用される。
- インクリメント – 変数に代入されている数値をひとつ上に上げること。「++」を使って表現する。
- デクリメント – 変数に代入されている数値を数値をひとつ下に下げること。「–」を使って表現する。
インクリメントの例を書くと以下のようになる。
int number = 7;
System.out.println(number); // 7が出力される
number++;
System.out.println(number); // 8が出力される
インクリメントは変数の前にも後にも記述することができるがそれぞれにインクリメントがおこなわれるタイミングが異なる。
int firstNumber = 12;
System.out.println(firstNumber++); // 12が出力される
int secondNumber = 12;
System.out.println(++secondNumber); // 13が出力される
class ArithmeticOperatorClass { public static void main(String[] args) { // 足し算 System.out.println("足し算 5 + 4 = " + (5 + 4)); // 引き算 System.out.println("引き算 12 - 8 = " + (12 - 8)); // 掛け算 System.out.println("掛け算 5 ✖️ 4 = " + (5 * 4)); // 割り算 System.out.println("割り算 25 ➗ 5 = " + (25 / 5)); // intで割り算した場合は少数点は切り捨てられる System.out.println("割り算(少数点切り捨て) 26 ➗ 4 = " + (26 / 4)); // doubleで割り算した場合は少数点は含む System.out.println("割り算(少数点含む) 26d ➗ 4d = " + (26d / 4d)); // Errorとなるパターン // System.out.println("0を含む割り算 12 ➗ 0 = " + (12 / 0)); // Infinityとなるパターン System.out.println("0を含む割り算 12d ➗ 0 = " + (12d / 0)); // 割り算の余りを求める場合 System.out.println("25 ➗ 6の余り = " + (25 % 6)); // インクリメント int number = 7; System.out.println(++number); System.out.println(number++); // デクリメント System.out.println(number--); System.out.println(--number); } }