【Java文法】演算子(オペレーター)

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

本記事では'演算子(オペレーター)'について、説明したいと思います。

******

# １．演算子(オペレーター)とは?

オペレーターは演算をする為の記号です。
主に使われている演算子は四則演算(しそくえんざん)のために必要な'算術演算子'、
値を順次増やしたり、減らしたりするための'増減演算子'、値の比較などための'比較演算子'、変数に値を代入するための'代入演算子'などがあります。


# 2. 算術演算子(さんじゅつえんざんし)
 四則演算のような計算をするために使う演算子で、
コードでは"[値A][演算子][値B]"のような形で使われます。
コードの解析は"値Aを値Bで演算子に該当する演算を実施"とすれば良いです。

## 1) '+' プラス演算子
プラス演算子は足し算で使われ、コードの解析は **"値Aに値Bを足す"** になります。

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

System.out.println(a + b);  // 120
System.out.println(a + c);  // 90
```

## 2) '-'(ハイフン) マイナス演算子
マイナス演算子は引き算で使われ、コードの解析は **"値Aから値Bを引く"**になります。

```
System.out.println(a - b);  // 80
System.out.println(a - c);  // 110
```

## 3) '*'(アスタリスク) 掛け算演算子 
アスタリスクは掛け算に使われ、コードの解析は **"値Aに値Bを掛ける"**になります。

```
System.out.println(a * b);  // 2000
System.out.println(a * c);  // -1000
```

## 4) '/'(スラッシュ) 割り算演算子
スラッシュは割り算に使われ、コードの解析は **"値Aを値Bに割る"**になります。

```
System.out.println(a / b);  // 5
System.out.println(a / c);  // -10
```

## 5) '%'(パーセント)　余り演算子
パーセントは割り算の余りを求める演算に使われ、コードの解析は **"値Aを値Bに割った余りを求める"**になります。

```
System.out.println(a % b);  // 0
System.out.println(a % c);  // 0
```

# 3. 増減演算子(ぞうげんえんざんし)
増減演算子は変数の値をインクリメント又はデクリメントする演算に使う演算子です。
増減演算子は前置又は後置で使えます。

## 1) '++n', '--n' 前置増減演算子
前置増減演算をする場合、増減演算を行った後、演算済みの値が出力されます。

```
int n = 0;

System.out.println(++n);  // 1
System.out.println(n);    // 1
System.out.println(--n);  // 0
System.out.println(n);    // 0
```

## 2) 'n++', 'n--' 後置増減演算子
後置増減演算をする場合、変数に格納されていた値が予め出力し、増減演算が行われます。

```
System.out.println(n++);  // 0
System.out.println(n);    // 1
System.out.println(n--);  // 1
System.out.println(n);    // 0
```

# 4. 比較演算子
比較演算子は値を比較に使われる演算子です。比較演算の式が真か偽かの結果をbooleanの値にて返却します。

## 1) '<'　演算子
演算子を基準として **左側の値と右側の値を比較し、右側の値が大きくとtrueをリターンし、そうではない場合はfalseをリターン**します。

```
int num1 = 10;
int num2 = 20;
int num3 = 10;

System.out.println(num1 < num2);  // true
System.out.println(num1 < num3);  // false
```

## 2)  '<=' 演算子
演算子を基準として **左側の値と右側の値を比較し、'右側の値が大きい'又は'右側の値と左側の値が同じ場合'はtrueをリターンし、そうではない場合はfalseをリターン**します。

```
System.out.println(num1 <= num2);  // true
System.out.println(num1 <= num3);  // true
```

## 3) '>'　演算子
演算子を基準として **左側の値と右側の値を比較し、左側の値が大きくとtrueをリターンし、そうではない場合はfalseをリターン**します。

```
System.out.println(num1 > num2);  // false
System.out.println(num1 > num3);  // false
```

## 4) '>=' 演算子
演算子を基準として **左側の値と右側の値を比較し、'左側の値が大きい'又は'右側の値と左側の値が同じ場合'はtrueをリターンし、そうではない場合はfalseをリターン**します。

```
System.out.println(num1 >= num2);  // false
System.out.println(num1 >= num3);  // true
```

## 5) '==' 演算子
演算子を基準として **左側の値と右側の値を比較し、'右側の値と左側の値が同じ場合'はtrueをリターンし、そうではない場合はfalseをリターン**します。

```
System.out.println(num1 == num2);  // false
System.out.println(num1 == num3);  // true
```

## 6) '!='(XOR) 演算子
演算子を基準として **左側の値と右側の値を比較し、'右側の値と左側の値が違う場合'はtrueをリターンし、同じ場合はfalseをリターン**します。

```
System.out.println(num1 != num2);  // true
System.out.println(num1 != num3);  // false
```

## 7) '!'(NOT) 演算子
演算子を基準として **左側の値と右側の値を比較した結果がtrueの場合はfalseを、結果がfalseの場合はtrueをリターン**します。

```
System.out.println(!(num1 == num2));  // true
System.out.println(!(num1 == num3));  // false
```

## 8) '&&'(AND) 演算子
演算子を基準として **左側の式と右側の式の結果が全てtrueの場合はtrueを、両方の式のうちどちらでも式の結果がfalseの場合はfalseをリターン**します。

※ 左側の式の結果がfalseの場合、右側の式の比較は実行されない。

```
System.out.println((num1 != num2) && (num1 == num3));    // true
System.out.println(isEqual(num1, num2) && isEqual(num1, num3));  // false

public static boolean isEqual(int num1, int num2) {
    boolean result = num1 == num2;
    System.out.println("isEqual Result is : "+result);
    return result;
}
```

## 9) '||'(OR) 演算子
演算子を基準として **左側の式と右側の式の結果が両方の式のうち、どちらか一つ以上の式の結果がtrueの場合はをtrueをリターンし、両方の式が全てfalseの場合falseをリターン**します。

```
System.out.println((num1 != num2) || (num1 == num3));            // true
System.out.println(isEqual(num1, num2) || isEqual(num1, num3));  // true
```

※ 論理演算の結果値まとめ

|左式の結果 |右式の結果 |AND(&&) |OR(&#124;&#124;) |XOR(!=) |
|---|---|---|---|---|
|true|true|true|true|false|
|true|false|false|true|true|
|false|false|false|true|true|
|false|false|false|false|false|


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


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