プログラミング言語Javaにおけるif文の使い方・書き方についてJava初心者向けに解説します。
if文を使えば、条件分岐を実装できます。条件分岐はプログラミングの中でも基本事項の一つですので必ず理解しておきましょう!
本記事では、if文の基本的な書き方・else if・重要な演算子(or・and)・ネスト(入れ子)について、具体的なソースコードを交えて解説していきます。
本記事を読み終える頃には、Java if文の基礎が理解できているでしょう。
ぜひ最後まで読んで、Java if文を理解してください。
公開日:2022年3月4日
INDEX
Java if文の書き方
まずはif文の基本的な書き方から解説していきます。Javaでのif文は、以下のように書きます。
1 2 3 4 5 |
if (条件式){ //条件式が真(true)の場合の処理 } else { //条件式が偽(false)の場合の処理 } |
例えば、以下のソースコードを考えてみましょう。
1 2 3 4 5 6 7 8 9 10 |
public class Main { public static void main(String[] args) { int num = 5; if (num == 5) { System.out.println("numは5です"); } else { System.out.println("numは5ではありません"); } } } |
【出力結果】
1 |
numは5です |
まず、
1 |
int num = 5; |
というソースコードで変数numに5を代入しています。
そして、if文の条件式でnumが5に等しいかどうかを判定しています。(「=(イコール)」が2つ付くことに注意してください。)
今回は、numが5に等しいので、
1 |
System.out.println("numは5です"); |
という処理が実行されます。
もし、変数numが5以外(10や90など)の場合は、
1 |
System.out.println("numは5ではありません"); |
という処理が実行されることになります。
条件式には、「==」以外にも「<」や「>=」、「!=」などの比較演算子を利用します。
詳しくは、Javaの比較演算子についてまとめているページをご覧ください。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Java if〜elseで条件分岐してみよう
Java if文での学習では、「else」の学習も欠かせません。本章では、「if〜else」について学んでいきましょう。
elseを使えば、より多くの条件分岐を行うことができます。
まずは以下のソースコードをご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 |
public class Main { public static void main(String[] args) { int num = 15; if (num == 5) { System.out.println("numは5です"); } else if (num == 15) { System.out.println("numは15です"); } else { System.out.println("numは5でも15でもありません"); } } } |
【出力結果】
1 |
numは15です |
まず、
1 |
int num = 15 |
というソースコードで変数numに15を代入しています。
そして、まず1つ目の条件式
1 |
if (num == 5) |
で変数numが5に等しいかどうかを判定します。今回、変数numは15なので、この条件式は偽(false)となり、
1 |
System.out.println("numは5です"); |
は実行されません。そして、2つ目の条件式からは「else if」となります。else ifは前段の条件式が偽となった場合に実行されるif文です。
1 |
if (num == 15) |
で変数numが15に等しいかどうかを判定します。これは真(true)なので、
1 |
System.out.println("numは15です"); |
が実行されてプログラムは終了します。
もしも、変数numが5でも15でもない場合には、「else」以下の処理が実行されます。elseはif文やif else文の条件に該当しない場合に実行されるものです。
以上のように、if文に「else」を付け加えることでより多くの条件分岐を行うことができます。
Java if文で条件式を組み合わせる(OR/論理和)
先ほどまでのif文の条件式は、「〇〇が××に等しければ」などでした。
しかし、if文の条件式では、「〇〇が5以上、または××が20以下ならば」(英語でORに相当する)のように組み合わせることもできます。
例えば、
1 |
num1 > 10 || num2 <50 |
という条件式は、「『変数num1が10より大きい』または『変数num2が50より小さい』」という2つの条件式を組み合わせたものです。どちらかの条件式が真(true)の場合に全体の条件式は真(true)を返します。
「または(OR)」に相当する部分が「||」であり、論理和と呼ばれています。
では、具体的なソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
public class Main { public static void main(String[] args) { int num1 = 10; int num2 = 30; if (num1 < 5 || num2 > 20 ) { System.out.println("TRUE"); } else { System.out.println("FALSE"); } } } |
【出力結果】
1 |
TRUE |
「num1<5」は偽(false)で、「num2>20」は真(true)です。
「||(論理和)」はどちらか一方が真(true)であれば条件式全体として真(true)になるので、今回の場合は条件式全体が真(true)となります。
よって、
「num1<5」は偽(false)で、「num2>20」は真(true)ですね。
よって、
1 |
System.out.println("TRUE"); |
が実行されるというわけです。
Java if文における「||(論理和)」は英語の「OR」に相当することを覚えておきましょう!
Java if文で条件式を組み合わせる(AND/論理積)
if文には、「&&(論理積)」という演算子もあります。
「&&(論理積)」は「||(論理和)」と違い、条件式内の左辺と右辺の両方が真(true)にならなければ条件式全体が真(true)になりません。
「&&(論理積)」は英語の「AND」に相当します。
では、先程のコードから論理演算子のみ変更した具体的なソースコードを見比べてみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
public class Main { public static void main(String[] args) { int num1 = 10; int num2 = 30; if (num1 < 5 && num2 > 20 ) { System.out.println("TRUE"); } else { System.out.println("FALSE"); } } } |
【出力結果】
1 |
FALSE |
num1=10ですので、条件式の「num1<5」は偽(false)です。
num2=30ですので、条件式の「num2>20」は真(true)です。
「||(論理和)」では片方でも真(true)があれば、全体の条件式も真(true)になりましたが、「&&(論理積)」ではすべての条件式が真(true)にならなければなりません。
そのため、
1 |
System.out.println("FALSE"); |
が実行されます。
もし、
1 |
if(num1 < 15 && num2 > 20) |
といった場合には、「num1 < 15」が真(true)なので条件式全体としては真 (true)になります。
「&&(論理積)」と「||(論理和)」の違いは注意してください。
Javaでネスト(入れ子)したif文の使い方
if文はネスト(入れ子)で利用することもできます。ネストとは、if文の中にif文が入っている状態を表す構造です。ネストは複雑な条件式を実現する際に利用され、プログラミングの世界では頻繁に登場します。
実際に具体的なソースコードの例として、次のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class Main { public static void main(String[] args) { int num1 = 10; if ( num1 > 15 ) { System.out.println("15より大きい"); } else { if( num1 > 5 ) { System.out.println("5~15の間"); } else { System.out.println("5より小さい"); } } } } |
【出力結果】
1 |
5~15の間 |
変数num1に10を代入し、最初のif文で「num1 > 15」と15よりも小さいかをチェックしています。結果は偽(false)となるため、else文が実行されてネストされているif文が実行されます。
1 |
if( num1 > 5 ) |
こちらのif文では、num1は5よりも大きいため真(true)となり、「5~15の間」が出力されるわけです。
流れが少し複雑であるため、フローチャートを使って整理してみましょう。
if文のあとに再度if文が登場していますね。しかし、ソースコード上ではif文の中にif文が入っているためネストであることがすぐに分かりますが、フローチャート上ではそうとも言い切れません。その理由としては、ネストせずに記載する方法があるからです。
if文をネストさせない書き方
先程の例でいえば、わざわざif文をネストせずともelse if文を使えば実装できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Main { public static void main(String[] args) { int num1 = 10; if ( num1 > 15 ) { System.out.println("15より大きい"); } else if( num1 > 5 ) { System.out.println("5~15の間"); } else { System.out.println("5より小さい"); } } } |
【出力結果】
1 |
5~15の間 |
また、「||(論理和)」や「&&(論理積)」も上手に使えば、ネストせずに複雑な条件式を実現可能です。ネストは複雑な条件式を実現できる反面、ソースコードの可読性が低下してバグを発生させる可能性があるなど、デメリットも存在します。
プログラミングの世界では頻繁に利用されますが、できるだけネストは避けて簡潔に条件分岐を実現しましょう。
プログラミング言語Javaを利用する上で、条件分岐を実装するif文は非常に重要です。この記事では、if文の書き方からif〜else、「||(論理和)」や「&&(論理積)」、「ネスト(入れ子)」について解説しました。
はじめは難しくとも、利用していくなかで少しずつ理解が深まるものです。if文を記載する際には、「もっと簡潔に記載できないか」を意識しながら進めていくと上達スピードが向上するでしょう。
【Java-基礎】完全未経験からの基礎入門講座(丁寧解説/豊富な図解/ハンズオン/Java Silver試験対応)
導入編(詳細は下記)で無料お試し学習をした人はこちら!完全未経験からでも安心して学習できる講座です。豊富な図解を用いてとにかく丁寧にじっくり解説。途中で挫折してしまった方にもおすすめです。プロの講師に質問&キャリア相談もできる!
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
授業内容はわかりやすいのはもちろん、各セクションごと練習問題もそのセクションの内容だけでなく、それまでに習ったことを活用できるように凝られて作られていたように感じた。プログラミング未経験に本当にお勧めできる教材だと思う。
評価:★★★★★
ご説明がとにかく丁寧でわかりやすく、プログラミング初心者の方でも受講しやすい内容なのではないかと思います。
特に、理解があやふやになりそうな部分を解説するためのイメージ図が作り込まれていて良かったです。
受講して良かったと思いました。ありがとうございます。
最新情報・キャンペーン情報発信中