関係演算子と条件
これまでは処理が一本道のように進むプログラムだけを扱ってきましたが、実際の動作では、条件に応じて処理を枝分かれさせなければならないこともあります。 ここでは、まず条件について学習しておきましょう。
条件とは
例えば、テストの合否判定プログラムで、80点以上の場合は「合格」と表示して、80点未満の場合は「不合格」と表示するような処理の枝分かれが考えられるでしょう。 このように条件によって処理を枝分かれさせることを条件分岐(conditional branch)と言います。 このようなプログラムはどうすれば実現できるのでしょうか。
ここで言う条件(condition)とは、正しいかどうかが明確に判断できることがらのことです。 例えば、数値の関係を表す「aは0より大きい」、「bは2に等しい」、「cは1と等しくない」等のことがらは、みな条件であると言えます。 また、条件が「正しい」ことを真(true)、「正しくない」ことを偽(false)と言います。 「aは0より大きい」という条件を実際にJavaのコードで表すには、次の例のように演算子 > を使います。
a > 0
これは式であり、評価した結果はboolean型の値、すなわちtrueかfalseのいずれかになります。 boolean型についてお忘れの方は第4章の「変数と型」をご覧ください。 例えば、aの値が1のときは、「aは0より大きい」という条件は真になりますから、この式の値はtrueとなります。 また、aの値が-2のときは、「aは0より大きい」という条件は偽になりますから、この式の値はfalseとなります。
関係演算子
ここで登場した > の様な数値の関係を表す演算子のことを関係演算子(relational operator)と言います。 関係演算子を使えば、条件を式で表すことができます。 それでは、関係演算子を表にまとめておきましょう。
演算子 | 使い方 | 式の値がtrueとなる場合 |
---|---|---|
== | a == b | aがbに等しい |
!= | a != b | aがbに等しくない |
> | a > b | aがbより大きい |
>= | a >= b | aがbより大きいか等しい |
< | a < b | aがbより小さい |
<= | a <= b | aがbより小さいか等しい |
「aがbに等しい」ことは a == b と表します。 a = b ではありません。 = はあくまでも代入演算子なのです。 実際にコードを書くときに、初心者はここでミスをしやすいので要注意です。 また、 == や != は2文字で1つの演算子ですから、 ! と = の間にスペース等を入れたりしてはいけません。
a == b は「aがbに等しい」
a = b は「bをaに代入する。」
関係演算子を使った式で条件を表すことができる。
それでは、サンプルコードで関係演算子のはたらきを確かめてみましょう。
ConditionSample01.java
class ConditionSample01 { public static void main(String[] args){ int a = 0; int b = -2; System.out.println("1 < 2 は "+(1 < 2)); System.out.println("4 <= a は "+(4 <= a)); System.out.println("b < a は "+(b < a)); System.out.println("0 == a は "+(0 == a)); System.out.println("b != -2 は "+(b != -2)); } }
実行結果は次のようになります。
ConditionSample01の実行結果
1 < 2 は true 4 <= a は false b < a は true 0 == a は true b != -2 は false
まず、コード中の
System.out.println("1 < 2 は "+(1 < 2));
の部分について考えてみましょう。 1は2より小さいので、 1 < 2 の値はtrueとなり、これが文字列の"true"に変換された後に、文字列の"1 < 2 は "と連結されます。その結果、
"1 < 2 は true "
という文字列が表示されることになります。次に、
System.out.println("4 <= a は "+(4 <= a));
の部分を見てみましょう。aの値は0となっていますので、 4 <= a の値はfalseとなり、 1 < 2 の場合と同様にして、
"4 <= a は false"
という文字列が表示されるのです。残りの部分についても同じように考えていけば、なぜそうなるのかお分かりいただけるでしょう。
条件を表す式の値は、trueかfalseになる。