Java 学習記録 4日目

# 目的
この記事は以下の記事の続きです。

https://qiita.com/banana877_it/items/00a174d35b42956dec72

Javaを学習するC言語使い一年目エンジニアのノートです。

# 前回の復習
前回の復習をさらっと。
```java
// 特別な注釈がない限りコードはJavaです。
class Main {
  public static void main(String[] args) {
    int a = 5;
    double b = 0.2;
    String s = "ハンバーガー";

    // 自動的な型変換
    // int型の変数aは自動的に文字列に変換されて表示されています
    System.out.println("今日は" + s + "を" + a +"個食べた");
    // int型の変数aは自動的にdouble型に変換されています
    System.out.println(a + b);    // 5.2が出力される

    //明示的な型変換
    // int型の変数aは明示的にdouble型に変換されました
    System.out.println((double)a / 2);    //2.5が出力される
  }
}
```
おさらいできたところで早速本編行ってみましょう！

# 勉強のお供はしるこさんどがおすすめ
### 真偽値
ここで真偽値が登場しました。
**true**と**false**の値がある**boolean型**ですね。
この型の値は文字列ではないので "" はつけません。

### 演算子
#### 比較演算子
比較演算子は以下の通り
* ==　左辺と右辺が等しいとき真
* !=　左辺と右辺が等しくないとき真
* <　左辺が右辺よりも大きいとき真
* <=　左辺が右辺よりも大きいまたは等しいとき真
* \>　左辺が右辺よりも小さいとき真
* \>=　左辺が右辺よりも小さいまたは等しいとき真

こちらもC言語と変わらないようで……
サラッとレッスンを確認したところ、けっこうC言語に書き方が近いんですね。
このまま論理演算子も行ってみましょう。

#### 論理演算子
* &&　左辺かつ右辺のとき真
* ||　左辺または右辺のとき真
* !　～でないとき真

―特にコメントはないようです―
（今日は体調が悪いのでエネルギー切れ）

#### コード例
```java
class Main {
  public static void main(String[] args) {
    int a = 8;
    int b = 9;
    int c = 17;
    boolean bool = true;

    System.out.println(bool);     // trueそのまま出力

    bool = a < b;
    System.out.println(bool);    // trueが出力
    bool = a + b != c;
    System.out.println(bool);     // falseが出力
    bool = a + b == c && a + c == b;
    System.out.println(bool);     // falseが出力
    bool = !(a + b <= c);    //a + b != cと同値
    System.out.println(bool);     // falseが出力
  }
}
```
全てやるとコードが長くなってしまうので、抜粋してみました。
こんな感じなんだなと雰囲気を察していただければ。

### 条件分岐
#### if文
やっときました！ if文！！
サラッとレッスンを終えた感じC言語とほとんど変わりないようですね。
まずは書き方をさらっと。
```java
// if文の書き方
if (条件式) {
  // 何らかの処理
  // {}で括られている部分をブロックと呼ぶ
}
```
条件式がtrueになる場合のみブロックの中身を実行します。

Javaにももちろん**else if**と**else**があるので、そちらも書き方を。
```java
// elseとかが入ったif文の書き方
if (条件式1) {
  // 何らかの処理
} else if (条件式2) {
  // 条件式1が偽かつ条件式2が真
  // 何らかの処理
} else {
  // 条件式1も2も偽
  // 何らかの処理3
}
```
ifのあとにelse ifやelseをくっつけるときは、どちらかだけを書くことや、elseの前にelse ifを増やすなどもできます。

早速コード行ってみましょう。
```java
class Main {
  public static void main(String[] args) {
    int a = 8;
    int b = 9;
    int c = 17;

    if (a + b > 20) {
        System.out.println("おおきいねぇ");
    } else if (a + b > 10) {
        System.out.println("ちゅうくらいだねぇ");
    } else {
        System.out.println("ちいさいねぇ");
    }    
  }
}
```
どれが出力されるかわかりますか？
正解はa + b = 17で、10以上20未満なので「ちゅうくらいだねぇ」です。

#### switch文
こちらもC言語と同じでした。
まとめるのに疲れて口数が少なくなりつつあります。
```java
// switch文の書き方
switch (変数名) {
  case 値1:    // 変数名が値1と一致するときに処理1が実行される
      // 処理1
      break;    // breakが無いと条件を満たしていない他の処理も実行されてしまいます
  case 値2:    // 変数名が値2と一致するときに処理2が実行される
      // 処理2
      break;
      // caseはたくさん書いても良い
  default:    // 全てのケースを満たさなかったときに処理defaultが実行される
      // 処理default
      break;
}
```
ふるいにかけていくイメージで、変数の判定がどんどん下に落ちていきます。
コード例は以下の通り

```java
class Main {
  public static void main(String[] args) {
    int n = 2;

    switch (n) {
      case 1:
          System.out.println("わたしはきのこ派です");
          break;
      case 2:
          System.out.println("わたしはたけのこ派です");
          break;
      default:
          System.out.println("わたしは小枝派です");
          break;
    }
  }
}
```
選ばれたのはたけのこでした……
switch文は個人的にプログラム作成後も見やすいしメンテしやすいしで好きです。
使えるところでは積極的に使っていきたいと思ってます。

# まとめ
今回の演算子～条件文はまとめるのに時間がかかってしまったのですが、基本的にはJava特有のなにかはなかったような気がします。
そして、これは学習記録なのでそのうちちゃんとしたまとめを作りたいな……なんて思ったり。
今回も最後まで読んでいただきありがとうございました。