「かつ」や「または」といった条件をプログラムに組み込むことはとても頻繁にある。Javaプログラミングでももちろん多用される。
ここで使われるのが条件演算子「&&」と「||」だ。このページでは条件演算子についてまとめたので、参考にして欲しい。
目次
Javaの条件演算子の使い方
Javaの条件演算子は、条件の演算を行う演算子だ。
条件の演算は、条件を表す式の値を演算子のオペランドに与えて論理積や論理和などの演算を行い、結果をboolean型の値として生み出す。この時、オペランド(右と左の値)に与えられる式はboolean型である。
論理演算子と条件演算子は、boolean型の値に対して演算を行うので似ている。しかし、違いがある。条件演算子は、右の式が左の式の値によって、評価されないときがあるということだ。
なかなかわかりにくいと思うので、詳細は次のセクションを見ていただければと思う。
また、条件演算子を使うと、式を組み合わせていろいろな条件を作り出すことができる。複雑な条件を書くためにはどうしたらよいかもサンプルプログラムにある。
まずは、演算子の種類から見ていこう。
「かつ」と「または」を表す演算子の種類
条件演算子には、ふたつの種類がある。次のセクションでこれらのひとつひとつの演算子の詳細を説明している。
- 条件演算子 &&
- 条件演算子 ||
「かつ」を表す条件演算子 &&
演算子「&&」はBoolean型の値の論理積を求める。&&演算子の左と右にあるオペランドに対して演算が行われる。
書き方の基本は簡単だ。
演算結果 = オペランド1 && オペランド2;
- オペランド1とオペランド2が両方ともtrueならば、演算結果はtrueとなる。
- それ以外はfalseとなる。
- オペランド1がfalseの場合、オペランド2は評価されない。
ここが違いになるが、はじめは深く考えなくていいだろう。とりあえず、少々違いはありつつも、ほとんど同じように動くと思っておけばいい。
下記のようにすると、20代以上の男性というのが表現出来る。
演算結果 = x > 20 && sex == "男性";
項目 |
値 |
|||
オペランド1 |
true |
true |
false |
false |
オペランド2 |
true |
false |
true |
false |
演算結果 |
true |
false |
false |
false |
図で表すとこんな感じだ。
「または」を表す条件演算子 ||
演算子「||」は整数のビットの論理和を求める。||演算子の左と右にあるふたつのオペランドに対して演算が行われる。
書き方の基本は簡単だ。
演算結果 = オペランド1 || オペランド2;
オペランド1とオペランド2の論理和の演算結果は次のようになる。
- オペランド1とオペランド2のどちらかがtrueならば、演算結果はtrueとなる。
- それ以外はtrueとなる。
- オペランド1がtrueの場合、オペランド2は評価されない。
例えば、20歳以下または女性というのを表現すると次のようになる。
演算結果 = x <= 20 || sex == "女性";
項目 |
値 |
|||
オペランド1 |
true |
true |
false |
false |
オペランド2 |
true |
false |
true |
false |
演算結果 |
true |
true |
true |
false |
条件演算子のサンプルプログラム
このサンプルプログラムは、ふたつのオペランドに基本的なboolean型の値の組み合わせを設定したとき、条件演算子からどんな演算結果が得られるかを表示している。実際のコードで、条件演算子の書き方と演算結果を確かめよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class ConditionalOperators { public static void main (String[] args) { boolean valueTrue = true;//[1] boolean valueFalse = false;//[2] boolean result;//[3] result = valueTrue && valueTrue;//[4] System.out.println("[5] true && true = " + result); result = valueTrue && valueFalse;//[6] System.out.println("[7] true && false = " + result); result = valueFalse && valueTrue;//[8] System.out.println("[9] false && false = " + result); result = valueFalse && valueFalse;//[10] System.out.println("[11] false && false = " + result); result = valueTrue || valueTrue;//[12] System.out.println("[13] true || true = " + result); result = valueTrue || valueFalse;//[14] System.out.println("[15] true || false = " + result); result = valueFalse || valueTrue;//[16] System.out.println("[17] false || true = " + result); result = valueFalse || valueFalse;//[18] System.out.println("[19] false || false = " + result); } } |
実行結果
1 2 3 4 5 6 7 8 |
[5] true && true = true [7] true && false = false [9] false && false = false [11] false && false = false [13] true || true = true [15] true || false = true [17] false || true = true [19] false || false = false |
このような結果になる。
二つの式を持つ条件演算子のサンプルプログラム
このサンプルプログラムは、ふたつの式を組み合わせて新しい条件を作り出す方法を示している。実際のコードで、式の組み合わせ方を見てみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class ConditionalOperatorsOnTwoExpressions { public static void main (String[] args) { int value1 = 2;//[1] int value2 = 7;//[2] boolean result;//[3] result = (value1 == 2) && (value2 == 7);//[4] System.out.println("[5] value1は2 かつ value2は7 = " + result); result = (value1 == 2) && (value2 == 3);//[6] System.out.println("[7] value1は2 かつ value2は3 = " + result); result = (value1 == 2) || (value2 == 3);//[8] System.out.println("[9] value1は2 または value3は3 = " + result); result = (value1 == 1) || (value2 == 3);//[10] System.out.println("[11] value1は1 または value2は3 = " + result); } } |
実行結果
1 2 3 4 |
[5] value1は2 かつ value2は7 = true [7] value1は2 かつ value2は3 = false [9] value1は2 または value3は3 = true [11] value1は1 または value2は3 = false |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] 変数value1を宣言し、2を代入する。
- [2] 変数value2を宣言し、7を代入する。
- [3] 変数resultを宣言する。
- [4] resultに (value1 == 2) && (value2 == 7)を代入する。
- [5] resultを表示する。
- [6] resultに(value1 == 2) && (value2 == 3)を代入する。
- [7] resultを表示する。
- [8] resultに(value1 == 2) || (value2 == 3)を代入する。
- [9] resultを表示する。
- [10] resultに(value1 == 1) || (value2 == 3)を代入する。
- [11] resultを表示する。
複雑な条件演算子のサンプルプログラム
このサンプルプログラムは、お母さんと子供の年齢が設定された条件に入っているかどうかを検査している。条件が条件演算子と括弧を使ってちょっと複雑に組み合わせられている。実際のコードで確認してみよう。
1 2 3 4 5 6 7 8 9 10 11 |
public class ConditionalOperatorsOnExpressions { public static void main (String[] args) { int ageOfMother = 25;//[1] int ageOfChild = 4;//[2] boolean result;//[3] result = (ageOfMother == 20) && (ageOfChild >= 7) && (ageOfChild <= 12);//[4] System.out.println("[5] お母さんは20才で子供が小学生 = " + result); result = (ageOfMother == 25) && ((ageOfChild == 4) || (ageOfChild == 5));//[6] System.out.println("[7] お母さんは25才で子供が4才か5才 = " + result); } } |
実行結果
1 2 |
[5] お母さんは20才で子供が小学生 = false [7] お母さんは25才で子供が4才か5才 = true |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] 変数ageOfMotherを宣言し、25を代入する。
- [2] 変数ageOfChildを宣言し、4を代入する。
- [3] 変数resultを宣言する。
- [4] resultに(ageOfMother == 20) && (ageOfChild >= 7) && (ageOfChild <= 12)を代入する。
- [5] resultを表示する。
- [6] resultに(ageOfMother == 25) && ((ageOfChild == 4) || (ageOfChild == 5))を代入する。
- [7] resultを表示する。
まとめ
このページでは「かつ」と「または」を表す条件演算子「&&」と「||」についてまとめてお伝えした。
本当によく使うので、必ず覚えてしまおう。