☜前の章へ 変数の使い方(宣言・代入・型・出力)
☞次の章へ 文字列Stringの基本と比較方法まで
- Javaの計算方法
- インクリメント・デクリメントのやり方
- 前置と後置の違い
- 演算子の優先順位と優先順位一覧
- 型変換(キャスト)のやり方
この章では、Javaでの基本的な計算方法について学んでいきます。
インクリメントなどよく分からない単語があると思いますが、1つ1つ覚えていきましょう。
普通の計算方法から効率的な計算方法まで解説していきます。
Javaの計算方法(足し算・引き算・割り算・掛け算・剰余算)
演算子一覧
| 演算子 | 名前 | 記述例 | 意味 |
| + | 加算演算子 | a + b | aにbを加える |
| – | 減算演算子 | a – b | aからbを引く |
| * | 乗算演算子 | a * b | aにbを掛ける |
| / | 除算演算子 | a / b | aをbで割る |
| % | 剰余演算子 | a % b | aをbで割った余り |
Javaの計算は上記の演算子を使用して行います。
1つ1つ確認していきましょう。
Javaの計算方法:足し算
public class App {
public static void main(String[] args) {
int add;
add = 1 + 1;
System.out.println("足し算の結果は" + add + "です。\n");
System.out.printf("足し算の結果は%dです。\n", add);
}
}出力結果

足し算は以下のように行っています。
add = 1 + 1;足し算は日常生活で足し算をする時と同じように、1 + 1で行うことが出来ます。
Javaの計算方法:引き算
public class App {
public static void main(String[] args) {
int sub;
sub = 5 - 2;
System.out.println("引き算の結果は" + sub + "です。\n");
}
}出力結果

引き算は以下のように行っています。
sub = 5 - 2;日常生活で引き算をする時と同じように、5 – 2で行うことが出来ます。
Javaの計算方法:掛け算
public class App {
public static void main(String[] args) {
int mul;
mul = 4 * 4;
System.out.println("掛け算の結果は" + mul + "です。\n");
}
}出力結果

掛け算は以下のように行っています。
mul = 4 * 4;日常生活で掛け算をする時は「4 × 4」としますが、Javaでは*(アスタリスク)を使います。
Javaの計算方法:割り算
public class App {
public static void main(String[] args) {
int div;
div = 6 / 2;
System.out.println("割り算の結果は" + div + "です。\n");
}
}出力結果

割り算は以下のように行っています。
div = 6 / 2;日常生活で割り算をする時は「6 ÷ 2」としますが、Javaでは/(スラッシュ)を使います。
Javaの計算方法:剰余算
剰余算とは、割り算の余りを求める計算のことです。
public class App {
public static void main(String[] args) {
int rem;
rem = 8 % 3;
System.out.println("剰余算の結果は" + rem + "です。\n");
}
}出力結果

8を2で割ると3余り2になるため、出力結果は2になります。
剰余算は以下のように行っています。
rem = 8 % 3;剰余算には%(パーセント)を使います。
Javaの変数を使った計算方法
public class App {
public static void main(String[] args) {
int add = 1;
add = add + 1;
System.out.println("足し算の結果は" + add + "です。");
}
}出力結果

このように、変数addに1を加算して、addに代入をすることもできます。
Javaのインクリメントとデクリメントのやり方
先ほどは、add + 1という形で1を足しました。
1だけ足す、1だけ引くという計算は多々行われます。
そのため、簡単に計算ができるように、インクリメント演算子(++)とデクリメント演算子(- -)というものがあります。
1だけ足すことをインクリメント、1だけ引くことをデクリメントと言います。
インクリメント演算子とデクリメント演算子
| 演算子 | 名前 | 記述例 | 意味 |
| ++ | インクリメント演算子 | ++a or a++ | aに1を加える |
| – – | デクリメント演算子 | – -a or a- – | aから1を引く |
変数の前に書くことを前置、後ろに書くことを後置と言います。
public class App {
public static void main(String[] args) {
int add = 1;
int sub = 2;
add++;
sub--;
System.out.printf("インクリメントの結果は%dです。\n", add);
System.out.printf("デクリメントの結果は%dです。\n", sub);
++add;
--sub;
System.out.printf("インクリメントの結果は%dです。\n", add);
System.out.printf("デクリメントの結果は%dです。\n", sub);
}
}出力結果

このように簡単に、プラス1、マイナス1の計算を行うことが出来ます。
Javaの前置と後置の違い
先ほどの計算結果を見て不思議に思いませんでしたか?
add++も++addもaddに1を加えました。何か違いがあるのでしょうか?
実は代入の時に違いが見られます。
まずは後置の場合を見てみましょう。
public class App {
public static void main(String[] args) {
int a = 2;
int b;
b = a++;
System.out.printf("aの値は%dです。\n", a);
System.out.printf("bの値は%dです。\n", b);
}
}出力結果

上記の例ではbに3が入りそうですが、実際には2が代入されます。
++がaの後ろ、つまり後置の場合は、aがインクリメントされる前に、aの値がbに代入されます。
代入された後にaがインクリメントされます。
以下と同じことが行われています。
public class App {
public static void main(String[] args) {
int a = 2;
int b;
b = a;
a = a + 1;
System.out.printf("aの値は%dです。\n", a);
System.out.printf("bの値は%dです。\n", b);
}
}前置の場合も確認してみましょう。
public class App {
public static void main(String[] args) {
int a = 2;
int b;
b = ++a;
System.out.printf("aの値は%dです。\n", a);
System.out.printf("bの値は%dです。\n", b);
}
}出力結果

前置の場合は、bの値が3になっています。
つまり、aがインクリメントされた後に、代入が行われています。
以下と同じことが行われています。
public class App {
public static void main(String[] args) {
int a = 2;
int b;
a = a + 1;
b = a;
System.out.printf("aの値は%dです。\n", a);
System.out.printf("bの値は%dです。\n", b);
}
}Javaの複合代入演算子の使い方
これまで、「a = a + 5」この様に、ある変数に加算したい場面が出てきました。
1を加算(インクリメント)、減算(デクリメント)する場合の簡単な書き方は覚えましたが、1以外を加算等する場面でも、簡単に書く方法があります。
簡単に書くためには複合代入演算子を使います。
複合代入演算子
| 演算子 | 記述例 | 意味 |
| += | a += 2 | a = a + 2 |
| -= | a -= 3 | a = a – 3 |
| *= | a *= 5 | a = a * 5 |
| /= | a /= 7 | a = a / 7 |
| %= | a %= 10 | a = a %10 |
「a = a + 2」は「a += 2」と書いても同じ結果になります。
aを1文字短縮することが出来ました。
public class App {
public static void main(String[] args) {
int num1 = 5;
int num2 = 5;
int num3 = 5;
int num4 = 4;
int num5 = 5;
int a = 2;
num1 += a;
num2 -= a;
num3 *= a;
num4 /= a;
num5 %= a;
System.out.printf("num2の値は%dです。\n", num2);
System.out.printf("num3の値は%dです。\n", num3);
System.out.printf("num4の値は%dです。\n", num4);
System.out.printf("num5の値は%dです。\n", num5);
System.out.printf("num1の値は%dです。\n", num1);
}
}出力結果

Javaの演算子の優先順位とは?優先順位の一覧
「num = 20 + 4 / 2」という計算があった時は、先に「4 / 2」の計算が行われます。
次に「20 + 2」の計算が行われ、最後にnumに代入されます。
このように演算子には計算の優先順位があります。
以下に表は演算子の優先順位を一覧化したものです。確認してみて下さい。
演算子の優先順位
| 優先順位 | 演算子 | 形式 | 機能 | 結合性 |
| 1 | () | x(y) | メソッドの呼び出し | 左 |
| [] | x[y] | 配列の要素 | ||
| . | x . y | メンバ参照 | ||
| ++ | x++ | 後置インクリメント | ||
| – – | x- – | 後置デクリメント | ||
| 2 | ++ | ++x | 前置インクリメント | 右 |
| – – | ‒x | 前置インクリメント | ||
| + | +x | 符号 | ||
| ‒ | -x | 符号の反転 | ||
| ~ | ~x | ビット否定 | ||
| ! | !x | 論理否定 | ||
| 3 | new | new x() | オブジェクト生成 | |
| (型名) | (x)y | キャスト | 右 | |
| 4 | * | x * y | 乗算 | 左 |
| / | x / y | 除算 | ||
| % | x % y | 剰余算 | ||
| 5 | + | x + y | 加算 | 左 |
| ‒ | x ‒ y | 減算 | ||
| 6 | << | x << y | 左シフト | 左 |
| >> | x >> y | 右シフト | ||
| >>> | x >>> y | 符号なし右シフト | ||
| 7 | < | x < y | 左の方が小さい | 左 |
| <= | x <= y | 左が右以下 | ||
| > | x > y | 左の方が大きい | ||
| >= | x >= y | 左が右以上 | ||
| instanceof | 型比較 | |||
| 8 | == | x == y | 等しい | 左 |
| != | x != y | 等しくない | ||
| 9 | & | x & y | ビット積 | 左 |
| 10 | ^ | x ^ y | ビット単位排他的論理和 | 左 |
| 11 | | | x | y | ビット和 | 左 |
| 12 | && | x && y | 論理積 | 左 |
| 13 | || | x || y | 論理和 | 左 |
| 14 | ?: | x y : z | 条件演算子 | 右 |
| 15 | = | x = y | 代入 | 右 |
| += | x += y | 加算代入 | ||
| -= | x -= y | 減算代入 | ||
| *= | x *= y | 乗算代入 | ||
| /= | x /= y | 除算代入 | ||
| %= | x %= y | 剰余代入 | ||
| <<= | x <<= y | 左シフト代入 | ||
| >>= | x >>= y | 右シフト代入 | ||
| &= | x &= y | ビット積代入 | ||
| |= | x |= y | ビット和代入 | ||
| ^= | x ^= y | ビット単位排他的論理和代入 | ||
| <<= | 左シフト代入 | |||
| >>= | 右シフト代入 | |||
| >>>= | 符号なし右シフト代入 |
Javaの型変換(キャスト)のやり方
型変換とは、データ型を変更することを言います。
例えば、float型をint型に変換することを型変換やキャストと言います。
public class App {
public static void main(String[] args) {
float floatValue = 3.14f;
System.out.printf("floatValueの値は%fです。\n", floatValue);
//float型をint型にキャスト(型変換)すると小数点以下が切り捨てられる
int intValue = (int) floatValue;
System.out.printf("intValueの値は%dです。\n", intValue);
}
}出力結果

(int) floatValueと書いている箇所でfloatValueの型をfloat型からint型へ型変換を行なっています。
float型からint型へ型変換を行うと、小数点以下は切り捨てられます。
練習問題
加算で7を求め、変数に代入し、コンソールに表示しましょう
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 2 + 5;
// 結果の表示
System.out.println("乗算の結果: " + result);
}
}減算で3を求め、変数に代入し、コンソールに表示しましょう
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 6 - 3;
// 結果の表示
System.out.println("減算の結果: " + result);
}
}乗算で10を求め、変数に代入し、コンソールに表示しましょう
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 2 * 5;
// 結果の表示
System.out.println("減算の結果: " + result);
}
}除算で3.33を求め、変数に代入し、コンソールに表示しましょう
public class App {
public static void main(String[] args) {
// 除算で3.33を求め、変数に代入
float result = 10.0f / 3;
// 結果の表示
System.out.printf("除算の結果: %.2f", result);
}
}①で7を代入した変数を2で剰余し、変数に代入し、コンソールに表示しましょう
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 2 + 5;
// 7を2で剰余し、変数に代入
int num = result % 2;
// 結果の表示
System.out.println("剰余の結果: " + num);
}
}変数numはどのように値が変化するでしょうか?+=から5つ答えましょう
int num = 7;
num += 2;
num -= 3;
num *= 2;
num /= 4;
num %= 2;9→6→12→3→1
numの値はいくつですか?
int num;
num = 2 * 5 + 3;13

