ほっと・ゆたカフェ

仕事・趣味など日常で体験したことをゆる~く紹介していきます

MENU

【JAVA】条件分岐で使われるif文とswitch文の違いって何?

お久しぶりの更新となりました><

 

今回はタイトルにもある通り条件分岐のお話になります。

JAVAの条件分岐の代表的なものに「if文」「switch文」の2種類があります。

今回はそれぞれの簡単な紹介とともに、この2つの違いと使い分けについて記載していきたいと思います。

 

<本記事の狙い>

・条件分岐とは何か?

・if文、switch文の仕組みを紹介

・if文のほうがいいケース、switch文のほうがいいケースを例を挙げて解説

 

早速見ていきましょう!

 

 

1.条件分岐とは?

プログラム開発で「一定の条件に従って処理を分岐させる」ことです。

 

以前紹介したフロー図ですが、改めて紹介します。

下図の「クラスは?」の分岐部分が『条件分岐』となります。

f:id:ysneuneu:20210426233941j:plain

 

 

 上記のフロー図を紹介した、過去のブログのリンクを貼っておきますね!

もしよかったら、参考にしてみてください。

ysneuneu.hateblo.jp

 

 

2.if文(if、else if、else)

if文は1つの条件式をもとに処理を分けるものになります。

概略としては以下です。

 f:id:ysneuneu:20210427104321j:plain

 

言葉で解説すると、下記3つの条件判断/処理に分岐します。

※条件①②両方に該当する場合は、先に判定される条件①のみ有効になります。

・条件式①に該当する場合 ⇒ ①の処理を実施

・条件式②に該当する場合 ⇒ ②の処理を実施

・条件式①②にも不成立 ⇒ 不成立の場合を処理。

 

実際のサンプルコードと実行結果は以下になります。

<サンプルコード>

class If_Statement{

  public static void main(String args){
    // プログラムの目的   

 System.out.println("if文の例です");
   

 // 条件を判定するのに必要な情報を設定   

 String hantei_A = "A"; 

 String hantei_B = "B"; 

 String hantei_C = "C";   

 

 // 入力引数のアルファベットを取得 

 String data = args[0];   

 

 // 条件分岐 

 if(hantei_A.equals(data)) {   

  System.out.println("Aです");   

 }else if (hantei_B.equals(data)) {   

  System.out.println("Bです");   

 }else if (hantei_C.equals(data)) {   

  System.out.println("Cです");   

 } else {   

  System.out.println("それ以外です"); 

 } 

 }

}

<実行結果>

f:id:ysneuneu:20210427164402j:plain

 

if文は条件分岐の中で最も基本的かつ手軽に使える条件分岐です!

 

また、例では1つの条件式に1項目しか設定していませんでしたが、下記の<例>のように1つの条件式で複数条件を設定することも可能です。

 

<例>

if (条件式① AND 条件式②)

条件式①、条件式②の両方が満たされたら処理される。

 

手軽な反面、1つのプログラムにif文、else if文が乱立して、わかりにくいプログラムが出来上がってしまうこともあるので、注意です。

 

3.switch文(switch、case、defalut)

switch文は、1つの項目を複数の条件で分岐処理できる仕組みになります。

概略としては以下です。

 f:id:ysneuneu:20210427104403j:plain

言葉で解説すると、下記3つの条件判断・処理に分岐します。

・変数の値が「1」のとき        ⇒ ①の処理を実施

・変数の値が「2」または「3」のとき ⇒ ②の処理を実施

・上記2つの条件以外(default)   ⇒ ③の処理を実施。

 

※switch文で評価するものについて、今回は「変数」で記載しましたが、式(計算式)なども設定可能です。

 

※「break」を記載しないと、その次のcase評価やdefault評価も動いてしまいますので注意が必要です。

上の図で「break」なしの状態だと、変数に「1」を設定した場合、処理①の後に処理③が流れることになります。

 

 

実際のサンプルコードと実行結果は以下になります。

<サンプルコード>

class Switch_Statement{
    public static void main(String args){

    // プログラムの目的
    System.out.println("Switch文の例です");

    // 条件を判定するのに必要な情報を設定
    final String hantei_MON = "月";
    final String hantei_TUE = "火";
    final String hantei_WED = "水";
    final String hantei_THU = "木";
    final String hantei_FRI = "金";
    final String hantei_SAT = "土";
    final String hantei_SUN = "日";

    // 入力引数のアルファベットを取得
    String data = args[0];

    // 条件分岐(Switch)
    switch (data) {
        case hantei_MON:
        case hantei_TUE:
        case hantei_THU:
        case hantei_FRI:
             System.out.println("6時間の曜日です");
             break;

        case hantei_WED:
             System.out.println("5時間の曜日です");
             break;

        case hantei_SAT:
             System.out.println("4時間の曜日です");
             break;

        default:
             System.out.println("日曜日です");

    }
  }
}

 

<実行結果>

f:id:ysneuneu:20210427160139j:plain

 

switch文は、1つの変数(評価式)に対して複数の条件分岐をしたいときに便利です。

 

ポイントとしては2点!!

・case評価は複数指定できる

⇒サンプルのプログラムでは「月」「火」「木」「金」のいずれをいれても、「6時間の曜日です」が表示されます

・defaultで条件に該当しない場合の処理を設定できる

⇒サンプルのプログラムでは「日」や存在しない曜日を入力すると必ず「日曜日です」が表示されます

 

4.今回のまとめ

今回はJAVAの条件分岐で代表的なif文、switch文を紹介しました。

それぞれメリット/デメリットがあるので、要件に応じて適切に使い分けをすれば、わかりやすいプログラムが作れます!!

 

〇if文

構文が簡易で慣れやすい。初心者にはオススメ。

複数の項目を同時に判定したいときに有効。

<例>

変数Aが「1」 かつ 変数Bが「2」の場合 など

 

〇switch文

ある評価項目(評価式)に対して、複数の判定をしたいときに有効。

<例>

変数A - 変数Bの結果が、

・0より小さいとき

・0のとき

・1のとき

・2以上のとき

など

 

 

それぞれの特性を理解して、なるべくわかりやすいプログラムを作ってみましょう!

 

今回は以上になります。ご覧いただきありがとうございました。

【JAVA】演算子の基礎:まずはこれだけ抑えておこう!

以前のブログにて「変数」の基礎を紹介しました。

今回は「変数」に並んでプログラミングに必須となる「演算子」について、『まずはこれだけでも覚えておこう!』というものを紹介します。

 

JAVA演算子というと、一般的に以下6種類があげられます。

・算術演算子

・インクリメント、デクリメント

・比較演算子

・代入演算子

・論理演算子

・ビット演算子

 

これからプログラミング・JAVAを勉強しようとする際に、いきなりすべてを理解するのは難しいと思います。

 

今回は、最低限抑えておきたいものとして、①算術演算子、②比較演算子、③論理演算子の3種類を紹介します!

 

 

 

1.算術演算子

主に四則演算をするときに使います。

 

プログラムを開発する以上、データ 特に 数字の計算が頻出します。

そのため、四則演算を担当する算術演算子は外せません!

 

最優先で慣れてしまいましょう。

 

・・・といっても、「四則演算」というだけあって、そこまで難しくはないです。

 

<代表的な算術演算子 5つ>

f:id:ysneuneu:20210520190458p:plain

 

ちなみに「+(足し算)」は、文字列の結合もできてしまいます!!

サンプルコードと実行結果を記載しておくので、ご覧ください。

 

<サンプル>

public class Caliculate {
  public static void main(String args) {

    // 宣言&初期化
    int a = 10;
    int b = 3;

    // 算術演算子の確認
    System.out.println("算術演算子の確認");
    System.out.println("a + b = " + (a + b));
    System.out.println("a - b = " + (a - b));
    System.out.println("a * b = " + (a * b));
    System.out.println("a / b = " + (a / b));
    System.out.println("a % b = " + (a % b));

    System.out.println();

    // +(加算)演算子は文字列の結合も可能
    String hello = "Hello";
    String world = "World!";

    // 文字列結合の確認
    System.out.println("文字列結合の確認");
    System.out.println(hello + world);
  }
}

<実行結果>

f:id:ysneuneu:20210520192102j:plain

 

以上、算術演算子でした。

 

 

2.比較演算子

データの大小を判定するときに使います。

こちらもシステム開発(≒プログラミング)では頻出なので、優先度高めです。

 

<代表的な比較演算子 6つ>

f:id:ysneuneu:20210520193010p:plain

 

「比較演算子」の名前の通り、演算子の両辺の値を比較していますね。

比較した結果を「true(正しい)」か「false(誤り)」かで返却します。

 

 一部抜粋でサンプルを記載します!

<サンプル>

public class Compare {
  public static void main(String args) {

    // 宣言&初期化
    int a = 10;
    int b = 3;

    // 比較演算子の確認
    System.out.println("比較演算子の確認(一部抜粋)"); 

    System.out.println(a != b);
    System.out.println(a > b);
    System.out.println(a <= b);

  }
}

 

<実行結果>

 

f:id:ysneuneu:20210520194057j:plain

 

以上、比較演算子でした。

 

 

3.論理演算子

 

複数の条件判定式を評価するときに使います。

 

比較演算子で1つ1つの式を評価するプログラムを記載することもできますが、論理演算子を利用すると、すっきりしたプログラムが記載できるので、ぜひ覚えておきましょう!

 

<代表的な論理演算子 3つ>

f:id:ysneuneu:20210520195733p:plain

 

<サンプル>

public class Logical {
  public static void main(String[] args) {

    // 宣言&初期化
    int a = 1;
    int b = 3;

    // 論理演算子の確認
    System.out.println("論理演算子の確認");
    System.out.println( a == 1 && b == 2);
    System.out.println( a == 1 || b == 2);
    System.out.println(!(a == 1) );

  }
}

<実行結果>

f:id:ysneuneu:20210520202510j:plain

 

たとえば「a == 1 && b == 2」は、下記のプログラムとやっていることは一緒なのですが、論理演算子を使ってしまえば1行で書けてしまうのでスマートです!

 

if ( a == 1) {

  if ( b == 2 ) {

    // true(正しい)

  } else {

  // false(誤り)

} else {

 //false(誤り)

}


 以上、論理演算子でした。

 

4.おわりに~他の演算子は?~

 

今回は、最低限抑えたい演算子の種類として3つ紹介しました。

①算術演算子

②比較演算子

③論理演算子

 

これでほとんどのプログラムは書けるようになりますので、まずは上記3つをマスターしてみてください!!

 

~おまけ:ほかの演算子種類について~

・代入演算子

こちらは算術演算子が理解できればすぐに理解できます。

基本的には、「計算した結果を変数などに代入する」目的なので「=」を使うことになります。

<例>

int a = 3 + 4;

 

これの応用として、「計算しながら代入する」という演算子もあります。

<例>

int a = 10;

a += 3;

 

意味合いとしては

a = a + 3;

と同じです。

つまり「aは13という値で上書き」されます。

『元の値に、右辺の値を足した結果を、元の変数に代入する』といった感じです。

 

算術演算子さえ理解できてしまえば、こちらの理解も早いと思うので、優先対象からは外しました。

 

 

・インクリメント、デクリメント

こちらは、演算子の勉強というより、ループ文とセットにして理解してしまったほうが楽なので、優先対象からは外しました!

いずれループについても更新していく予定なので、そちらで紹介しますね。

 

 

・ビット演算子

業務アプリケーション開発では、あまり見かける機会がなかったので、優先対象からは外しました!

ただし、ビットの考えは基本情報技術者試験など、基礎試験でも問われるところなので、余力のある方は調べてみると良いです!

が、今回紹介した3種類の演算子が理解できてからでも問題はないです!!

 

 

<参考サイト>

java-code.jp

 

今回は以上になります。

ご覧いただきありがとうございました。