if文について
6.6 if文について
これまで見てきたように、if文を利用すれば様々な条件に応じた処理を実行させることができます。これまでのサンプルは単純なパターンばかりでしたが、if文には色々なバリエーションがあり、プログラムに応じて複雑に記述を使い分けなければならない場合があります。また「論理演算式」は、複数の条件を組み合わせて記述することができます。
6.6.1 if文のルールとバリエーション
これまで学習してきたif文のルールを以下にまとめます。
- if文は複数条件式であっても、必ずifで始まる。
- if文の後ろにはelse if文はいくつでも繋げられる。
- else文を加える場合は、最後に1つである。
- else文は省略しても構わない。
- ifブロック、else ifブロック、elseブロック内にはif文を記述できる。(if文のネスト)
上記のルールを守れば、様々なバリエーションの記述ができます。
6.6.2 論理演算子とは
これまで、いろいろな条件分岐を説明しましたが、もっと多くの条件を組み合わせてより複雑な条件を表すときに使うのが論理演算子です。論理演算子の左右に来るのは、必ずtrueかfalse、もしくは解がそのようになる式となります。
主な論理演算子を表 6.6.1に示します。
論理演算子 |
使用例 |
意味 |
&& |
a==b && c==d |
aとbは等しく(true)、かつcとdが等しい(true)の時、trueを返す |
|| |
a==b || c==d |
aとbは等しい(true)か、またはcとdが等しい(true)の時、trueを返す |
! |
!(a==b) |
aとbが等しい時false、等しくない時trueを返す(否定) |
表 6.6.1 : 論理演算子の種類
各論理演算子がどのような値を返すのか、もう少し詳しく見てみましょう。
1. &&(AND)
「&&」は論理積とも呼ばれ、演算子の左辺と右辺の値がともに「true」の場合だけ、全体がtrueになります。
つまり、すべての条件を満たす(true)場合だけが全体がtrueになります。
aの値 |
bの値 |
a&&b |
true |
true |
true |
true |
false |
false |
false |
true |
false |
false |
false |
false |
表 6.6.2 : AND条件の演算結果
書式:条件文と「&&」論理演算子
この場合は、もし条件式Aが合っている、かつ、条件式Bが合っていたら処理を行う、ということになります。フローチャートにすると、図 6.6.1のようになります。
図 6.6.1 条件文と&&論理演算子のフローチャート
2. ||(OR)
「||」は論理和とも呼ばれ、演算子の左辺または右辺の値が少なくとも1つがtrueの場合に、全体がtrueになります。つまり、条件のうち1つ以上満たせば全体の式がtrueになります。
aの値 |
bの値 |
a||b |
true |
true |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
表 6.6.3 : OR条件の演算結果
書式:条件文と「||」論理演算子
この場合は、もし条件式Aまたは条件式Bのどちらかが合っていたら処理を行う、ということになります。
フローチャートにすると、図 6.6.2のようになります。
図 6.6.2 条件文と||論理演算子のフローチャート
「 | 」の入力方法「 | 」は、半角英数入力にした状態で、Shiftキーを押しながら「 | 」キーを押します。
「 | 」キーは、多くの場合はキーボード右側、Enterキーの斜め左上、BackSpaseの左にあります。
3. !(NOT)
「!」は論理否定と呼ばれ、演算子の右辺の値を反転します。trueの否定がfalseで、falseの否定がtrueになります。
a |
!a |
true |
false |
false |
true |
表 6.6.4 : 論理NOT
書式:条件文と「!」論理演算子
論理演算子「!」は条件の否定を表すものですので、この場合は、もし条件式の結果がtrueならそれを否定されるので処理は行われない、もし条件式の結果がfalseならそれを否定されるので処理が行われるということになります。
フローチャートにすると、図 6.6.3のようになります。
図 6.6.3 条件文と! 論理演算子
論理演算子を使うとより高度な条件式を組むことも可能になります。この論理演算子を使った条件文の詳しい方法は、「Java入門講座」で学習できます。