必要な環境
今回必要な環境はJDKとEclipseになります。今回使っているものは下記になります。開発環境の構築手順は連載の第1回を参照してください。
- JDK8
- Eclipse Kepler
また、この連載ではEclipseのコンパイラ準拠レベルは1.8(JDK8でコンパイル可能なレベル)にしています。
1. Javaの主な演算と制御
Javaでは、メソッドの処理内容を記述するのに計算や条件分岐などのさまざまな演算や制御を行います。そして、それらの処理の結果を呼び出し元に返したり、なんらかの形で出力したりなどします。今回はその演算や制御について、次の順番で見ていきます。
- 算術演算
- 比較演算
- 論理演算
- 制御構文
2. 算術演算
Javaでは「足す」「引く」「掛ける」「割る」の四則計算とともに、割り算の余りを算出する記号(演算子)やクラスのメソッドで算術演算を行うことができます。ここでは簡単なアプリケーションを作成しながらJavaの基本的な算術演算について見ていきます。
また、算術演算を行う際にソースコードに数値を記述するのですが、その際に一般的な数値(10進数の数値)で記述した場合、Javaでは小数点を含まれない数値をintに、小数点が含まれた数値をdoubleとして扱います。
それではJavaの算術演算を見てみましょう。
2.1. 主な算術演算子の種類
Javaでは算術演算子として主に次のものが使われます。
演算子 | 概要 |
+ | 足し算(加算) |
- | 引き算(減算) |
* | 掛け算(乗算) |
/ | 割り算(除算) |
% | 割り算の余り(剰余算) |
Javaではこれらを使って数値の計算を行えます。そして、計算の仕方も、左から順に計算するのではなく、演算子の種類や「()」(丸カッコ)の使用などで優先順位が高いものから計算するようになっています。
演算子の優先順位は一般的な数値計算の優先順位と同じく、「()」内の計算が最優先され、「*」(掛け算)、「/」(割り算)、「%」(割り算の余り)のほうが「+」(足し算)、「-」(引き算)より先に計算されます。
それでは次のソースコードを実行して算術演算子について見てみましょう。
package jp.codezine.java.sample03; /** * 算術演算子を確認するクラス。 */ public class ArithmeticOperator1 { /** * 算術演算を実行し、その内容を確認します。 * * @param args * コマンドライン引数。今回は使われません。 */ public static void main(String[] args) { // [1] 足し算 int result = 1 + 1; System.out.println("[1] 1 + 1 = " + result); // [2] 引き算 result = 10 - 1; System.out.println("[2] 10 - 1 = " + result); // [3] 掛け算 result = 3 * 2; System.out.println("[3] 3 * 2 = " + result); // [4] 割り算 result = 7 / 3; System.out.println("[4] 7 / 3 = " + result); // [5] 余り(7÷3の余り) result = 7 % 3; System.out.println("[5] 7 % 3 = " + result); // [6] 優先順位がある result = 2 + 3 * 4; System.out.println("[6] 2 + 3 * 4 = " + result); // [7] カッコ内のものが優先して計算される result = 4 * (2 + 3); System.out.println("[7] (2 + 3) * 4 = " + result); } }
実行すると下記の結果が表示されます。
[1] 1 + 1 = 2 [2] 10 - 1 = 9 [3] 3 * 2 = 6 [4] 7 / 3 = 2 [5] 7 % 3 = 1 [6] 2 + 3 * 4 = 14 [7] (2 + 3) * 4 = 20
2.2. 特殊な算術演算子の使い方
Javaでは一般的な算術演算の記述のほかに、プログラミング言語特有の記述方法があります。主なものに次の書式のものがあります。
変数 += 変数; // ※ 演算子は「+」のほかに「-」、「*」、「/」。「%」が使えます ++変数; // ※ 演算子は「++」のほかに「--」が使えます 変数++; // ※ 演算子は「++」のほかに「--」が使えます
例えば、intの変数「result」があり、「result += 2」は「result = result + 2」を表していて、これは計算前の値が1の場合、「変数 = 1 + 2」と同じになります。この記述は足し算の「+」だけではなく他の算術演算子の「-」「*」「/」「%」でも行うことができます。
また、「++」は変数に対し1を加算することを表しています。ただし注意点として、この「++」を前に書くか後ろに書くかで、その変数が計算されるタイミングが変わります。例えば、intの変数「result」があり、「++result」のように前に書いたものを引数としてメソッドに渡した場合、resultは1を加算された状態で渡されます。逆に「result++」と後ろに書いた場合、resultは1が加算される前の状態で渡されます。そして引数として渡された後に1が加算されます。この記述は「++」だけでなく1を減算する「--」でも行うことが可能です。
それでは次のサンプルを実行して算術演算子について見てみましょう。
package jp.codezine.java.sample03; /** * 算術演算子を確認するクラス。 */ public class ArithmeticOperator2 { /** * 算術演算を実行し、その内容を確認します。 * * @param args * コマンドライン引数。今回は使われません。 */ public static void main(String[] args) { // [1] 特殊な計算 int result = 1; result += 2; System.out.println("[1] result = 1 → result += 2 → result = " + result); // [2] 特殊な計算 System.out.println("[2] result = 1 → ++result"); result = 1; printValue(++result); System.out.println("result = " + result); // [3] 特殊な計算 System.out.println("[3] result = 1 → result++"); result = 1; printValue(result++); System.out.println("result = " + result); } /** * 受け取ったvalueを標準出力します。 * * @param value * 値 */ private static void printValue(int value) { System.out.println("受け取った値: value = " + value); } }
ここでは「++」演算子による計算が行われるタイミングを確認するため、printValueメソッドを作成して、引数に「++」演算子を使ったものを渡しています。そして、その受け取った値をprintValueメソッドで表示しています。これを実行すると、次の結果が出力されます。
[1] result = 1 → result += 2 → result = 3 [2] result = 1 → ++result 受け取った値: value = 2 result = 2 [3] result = 1 → result++ 受け取った値: value = 1 result = 2
この結果より[2]の++resultは演算子で計算された値が渡され、[3]のresult++は演算子で計算する前の値が渡されているのが分かります。