【JAVA】条件分岐で使われるif文とswitch文の違いって何?
お久しぶりの更新となりました><
今回はタイトルにもある通り条件分岐のお話になります。
JAVAの条件分岐の代表的なものに「if文」「switch文」の2種類があります。
今回はそれぞれの簡単な紹介とともに、この2つの違いと使い分けについて記載していきたいと思います。
<本記事の狙い>
・条件分岐とは何か?
・if文、switch文の仕組みを紹介
・if文のほうがいいケース、switch文のほうがいいケースを例を挙げて解説
早速見ていきましょう!
1.条件分岐とは?
プログラム開発で「一定の条件に従って処理を分岐させる」ことです。
以前紹介したフロー図ですが、改めて紹介します。
下図の「クラスは?」の分岐部分が『条件分岐』となります。
上記のフロー図を紹介した、過去のブログのリンクを貼っておきますね!
もしよかったら、参考にしてみてください。
2.if文(if、else if、else)
if文は1つの条件式をもとに処理を分けるものになります。
概略としては以下です。
言葉で解説すると、下記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("それ以外です");
}
}
}
<実行結果>
if文は条件分岐の中で最も基本的かつ手軽に使える条件分岐です!
また、例では1つの条件式に1項目しか設定していませんでしたが、下記の<例>のように1つの条件式で複数条件を設定することも可能です。
<例>
if (条件式① AND 条件式②)
⇒条件式①、条件式②の両方が満たされたら処理される。
手軽な反面、1つのプログラムにif文、else if文が乱立して、わかりにくいプログラムが出来上がってしまうこともあるので、注意です。
3.switch文(switch、case、defalut)
switch文は、1つの項目を複数の条件で分岐処理できる仕組みになります。
概略としては以下です。
言葉で解説すると、下記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("日曜日です");
}
}
}
<実行結果>
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つ>
ちなみに「+(足し算)」は、文字列の結合もできてしまいます!!
サンプルコードと実行結果を記載しておくので、ご覧ください。
<サンプル>
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);
}
}
<実行結果>
以上、算術演算子でした。
2.比較演算子
データの大小を判定するときに使います。
こちらもシステム開発(≒プログラミング)では頻出なので、優先度高めです。
<代表的な比較演算子 6つ>
「比較演算子」の名前の通り、演算子の両辺の値を比較していますね。
比較した結果を「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);}
}
<実行結果>
以上、比較演算子でした。
3.論理演算子
複数の条件判定式を評価するときに使います。
比較演算子で1つ1つの式を評価するプログラムを記載することもできますが、論理演算子を利用すると、すっきりしたプログラムが記載できるので、ぜひ覚えておきましょう!
<代表的な論理演算子 3つ>
<サンプル>
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) );}
}
<実行結果>
たとえば「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種類の演算子が理解できてからでも問題はないです!!
<参考サイト>
今回は以上になります。
ご覧いただきありがとうございました。