Javaのソースコードで、複雑な条件を使った分岐をしたいときは、「論理演算子」という演算子を使います。
論理演算子の種類には、次のようなものがあります。
1. &&
(AND)
&&
演算子を使った式は、左辺・右辺がともにtrueになる場合にのみ、条件がtrueになります。
例を見てみましょう。
a >= 3 && a == 2
上記の式では左辺・右辺の両方が成立することはあり得ないため、falseになります。
a >= 3 && a == 4
上記の式ではaの値が4のときに左辺・右辺の両方が成立するため、trueになります。
2. ||
(OR)
||
演算子を使った式は、左辺・右辺のどちらかがtrueであれば、条件がtrueになります。
例を見てみましょう。
a >= 3 || a == 2
上記の式の場合、左辺・右辺のどちらかがtrueであれば良いため、
aの値が3以上または2のときtrue になります。
また、aが1以下の場合はfalseになります。
3以上の場合の条件をみて、その結果がtrueであれば、「a==2」を見ずに、
条件の処理を実施します。
3. !
(NOT)
!
演算子は、オペランド(※boolean型の値)を1つとる単項演算子で、
オペランドがfalseの時に条件がtrueになります。
例を見てみましょう。
!(a == 6)
この式では aの値が6以外のとき、true になります。
注意点は、 a == 6 を先に比較するため、この条件式を()で囲う必要があります。
その条件に対して、!
演算子で否定します。
組み合わせて使う
複数の条件を組み合わせて使うこともできます。
例えば「 &&
」で分岐する式を2つ用意した後、それぞれを()で囲んで論理演算子の左辺・右辺に配置することで、それらの条件を踏まえた上で更に分岐をさせることができます。
例を見てみましょう。
(age >= 18 && gender == "男性") || (age >= 18 && gender == "女性")
この式では、左辺と右辺の条件は以下です。
- 左辺
(age >= 18 && gender == "男性")
でtrueになる条件
⇒ ageの値が18以上でgenderの値が男性 - 右辺
(age >= 18 && gender == "女性")
でtrueになる条件
⇒ ageの値が18以上でgenderの値が女性
最後に、これら2つの条件を ||
演算子を使って判断します。
どちらかがtrueであれば良いので、
age(年齢)が18以上の
gender(性別)が「男性」、「女性」どちらの場合でも trueとなります。
まとめ
if文などの中で論理演算子を使えば、より複雑な分岐をする処理ができるようになります。
一見「 ==
で良いのでは?」と思うような !
演算子は、実は一番使うようになる演算子です。
冗長的なソースコードを防ぐためにも、論理演算子の練習をして慣れていきましょう!
参考文献
- やさしいjava 第6版
高橋麻奈 (著), SBクリエイティブ, 2016年8月