【Java文法】条件分岐

こんにちは、コイキングです。

本記事では'条件分岐'について、説明したいと思います。

******

# 1. 条件分岐とは？
条件分岐は**条件式を用いて、コードを実行するかどうか制御する構文で、**
条件式の結果が真の場合構文内のコードが実行される形でコードの実行を制御します。
Javaで条件分岐の構文はif文、switch文、算術演算子があります。

# 2. if文
if文は条件式の結果が真であればif文の構文内のコードが実行され、プログラムのフローを制御する構文です。
else、else-ifキーワードを使ったり、省略することで多種多様にコード実行を制御できます。

## 1) if文単体で使う

※ 条件式の結果が真の場合、if文内部のコードが実行されます。

```
int a = 10;
int b = 20;
int c = 10;

if (a < b) {
	System.out.println(a +" より "+ b +"が大きい");
}
```

※ 条件式の結果が偽の場合、if文内部のコードは実行されないです。

```
if (a < c) {
    System.out.println(a +" より"+ c +"が大きい");
}
```

※ AND・OR演算子を使い、複数の条件比較ができる

```
if (a < b && a == c) {
    System.out.println(a +" より"+ c +"が大きい, " + a +"と "+ c +"は同じだ");
}
```

## 2) if - else
if文の条件式の結果が真の場合、if文内部のコードが実行され、条件式の結果が偽の場合else文内部のコードが実行されます。

```
if (a < c) {
    System.out.println(a +" より"+ c +"が大きい");
			
} else {
    System.out.println("条件不一致!!");
			
}
```

## 3) if - else if
if文の条件式の結果が真の場合、if文内部のコードが実行され、if文の条件の結果が偽の場合、
else if文の条件式を確認します。
else if文の条件式の結果が真の場合、else if文内部のコードが実行され、else if文の結果が偽の場合、if-else if構文のコードは何も実行されません。

※ else if文の数は制限がありません。

```
if (a < c) {
    System.out.println(a +" より"+ c +"が大きい");
		
} else if (a < b && a == c) { 
    System.out.println(a +" より"+ c +"が大きい, " + a +"と "+ c +"は同じ");
			
} else if (a < b) {
    System.out.println(a +" より"+ b +"が大きい");

}
```

## 4) if - else if - else
if文の条件式の結果が真の場合、if文内部のコードが実行され、if文の条件の結果が偽の場合、
else if文の条件式を確認します。
else if文の条件式の結果が真の場合、else if文内部のコードが実行され、else if文の結果が偽の場合、else文内部のコードが実行されます。

```
if (a < c) {
    System.out.println(a +" より"+ c +"が大きい");

} else if (a < b && a == c) { 
    System.out.println(a +" より"+ c +"が大きい, " + a +"と "+ c +"は同じ");
			
} else if (a < b) {
    System.out.println(a +" より"+ b +"が大きい");
			
} else {
    System.out.println("条件不一致!!");
			
}
```


# 3. switch文
switch文はキーの値と一致するケース文のコードを実行する方式でプログラムのフローを制御する構文です。
複数の条件分岐が必要な場合使うとif文よりコードが見やすくなると私は思います。

```
int key = 2;

switch (key) {
case 1 :
    System.out.println("Keyは 1 です。");
    break;
case 2 :
    System.out.println("Keyは 2 です。");
    break;
case 3 :
    System.out.println("Keyは 3 です。");
    break;
default:
    System.out.println("条件不一致!!");
    break;
}

// # 実行結果
// Keyは 2 です。
```

※ break文を使わない場合条件が一致したcaseからbreakを会うまで全てのcaseが実行されます！

```
switch (key) {
case 1 :
    System.out.println("Keyは 1 です。");
case 2 :
    System.out.println("Keyは 2 です。");
case 3 :
    System.out.println("Keyは 3 です。");
    break;
default:
    System.out.println("条件不一致!!");
}

// # 実行結果
// Keyは 2 です。
// Keyは 3 です。
```


# 4. 三項演算子
三項演算子はif文を単体で使う場合に代わりに使うと、コードを見やすく作成できる長所がある条件分岐構文です。

※ 基本的な使い方

```
int su1 = 100;
int su2 = 200;
		
// [データ型] [結果値を入れる変数] = (条件式) ? [条件式が真の場合の結果値] : [条件式が偽の場合の結果値];  
int resultInt = su1 < su2 ? su1 : su2 ;
System.out.println(resultInt);  // 100
```

※ 括弧で条件を囲むことができる、リターン可能なデータタイプはプリミティブ型・参照型どちらもできます。

```
String resultStr = (su1 < su2) ? su2+"の方がより大きい" : su1+"の方がより大きい" ;
System.out.println(resultStr);  // 200の方がより大きい
```

※ 結果値として戻り値があるメソッドをセットすることもできす。

```
int resultInt2 = (su1 < su2) ? beTwice(su2) : beTwice(su1);
System.out.println(resultInt2);

public static int beTwice(int su) {
    return su * 2;
}
```

※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_05_Conditions.java

※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/77?category=1068655