☜前の章へ 変数の使い方(宣言・代入・型・出力)
☞次の章へ 文字列Stringの基本と比較方法まで
この章では、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型へ型変換を行うと、小数点以下は切り捨てられます。
練習問題
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 2 + 5;
// 結果の表示
System.out.println("乗算の結果: " + result);
}
}
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 6 - 3;
// 結果の表示
System.out.println("減算の結果: " + result);
}
}
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 2 * 5;
// 結果の表示
System.out.println("減算の結果: " + result);
}
}
public class App {
public static void main(String[] args) {
// 除算で3.33を求め、変数に代入
float result = 10.0f / 3;
// 結果の表示
System.out.printf("除算の結果: %.2f", result);
}
}
public class App {
public static void main(String[] args) {
// 乗算で7を求め、変数に代入
int result = 2 + 5;
// 7を2で剰余し、変数に代入
int num = result % 2;
// 結果の表示
System.out.println("剰余の結果: " + num);
}
}
9→6→12→3→1
13