【Java】演算子まとめ

#演算子
##演算子の種類
プログラミングで使用される演算子は以下のように種類があります。

- 算術演算子(計算式に使われる)
- 代入演算子(計算式に使われる)
- 比較演算子(条件式に使われる)
- 論理演算子(論理式に使われる)

使う演算子によって以上のように様々な「式」をつくることが出来ます。

##算術演算子
算術演算子は足し算引き算などの計算を作る演算子です。

| 記号 | 機能 | 
| ---- | ---- | 
| +    | 加算 | 
| -    | 減算 | 
| *    | 乗算 | 
| /    | 除算 | 
| %    | 余剰 | 

###算術演算子を用いた計算
算術演算子を用いて作った計算式がこちらです。


```java
 System.out.println(3 + 2);
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613675/fd60e2a4-0533-5b4d-0939-bc0760fa02f8.png)

###文字列の連結
文字列を組み合わせることも可能です。
先ほど作成したハローカツラプログラムを出力してみます。

```java
        String a = "うおおーす！";
        String b = a + "やけどなおしの よういは いいか！"; // 変数bには、連結結果の文字列（"ABCDEF"）が保持される。
        System.out.println(a);
        System.out.println(b);
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613675/cf51b511-691d-2502-e2d4-3457278e5a2e.png)
成功です。

##代入演算子
代入演算子は、変数に代入する値に何かしらの計算を行い、その結果を再び同じ変数に代入する際に便利です。

| 記号                  | 機能                         | 内容      | 
| --------------------- | ---------------------------- | --------- | 
| a += b                | a と bを足してaに代入        | a = a + b | 
| a -= b                | aからbを引いてaに代入        | a = a- b  | 
| a *= b                | AとBを掛け合わせてAに代入    | a = a* b  | 
| a /= b                | AをBで割りAに代入            | a = a / b | 
| a %= b                | AをBで割りその余りをAに代入	 | a = a % b | 
| a ++ (インクリメント) | Aから値を1増やす             | a + 1     | 
| a -- (デクリメント)   | Aから値を1減らす             | a - 1     | 

代入演算子を用いた式を作ります。

```java
        int a = 10;
        int b = 10;
        int c = 10;
        int d = 10;
        int e = 10;

        System.out.println(a += 10);// 10を足す
        System.out.println(b -= 10);// 10を引く
        System.out.println(c *= 10);// 10をかける
        System.out.println(d /= 10);// 10で割る
        System.out.println(e %= 10);// 10で割った余り

```

出力結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613675/84c55a99-f368-dde2-4bc4-927dfaef4858.png)

##比較演算子
比較演算子は、左辺と右辺を比較し、数字の大小などを評価します。そして結果として真(true)か偽(false)の値を取ります。

| 記号   | 機能                           | 別名    | 
| ------ | ------------------------------ | ------- | 
| a == b | aとbが等しいときにtrue         | eq      | 
| a != b | aとbが等しくない時にtrue	      | ne, neq | 
| a > b  | aがbより大きい時にtrue         | gt      | 
| a < b  | aがbより小さい時にtrue         | lt      | 
| a >= b | aがbより大きいか等しい時にtrue | gte, ge | 
| a <= b | aがbより小さいか等しい時にtrue | lte, le | 

###文字列の比較
文字列の比較は特別です。 **文字列は、比較演算子で比較することはできません。**
文字列を比較する際は、Stringクラスにある**`「 equals 」`**という名前のメソッド（関数）を利用します。

```java
i  == 1;

// iが比較対象と合っていたらtrue
System.out.println(i == 1);
System.out.println(i == 2);

// iが比較対象と違っていたらtrue
System.out.println(i != 1);
System.out.println(i != 2);
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613675/87ac89a5-b5a2-1c37-47cb-cfa5922da946.png)

##論理演算子
論理演算子は**複数の比較演算子の結果を組み合わせる場合に使用されます。**
「~か〜だったら、、」や、「〜」
そのため、左辺や右辺には比較演算式が入ります。
そしてその左辺と右辺を比べた結果として、真(true)か偽(false)の値を取ります。

###論理演算子

|記号	| 意味  |機能                             |
|-------|-------|--------------------------------|
|a && b	| 〜かつ    |aとbが共にtrueの場合にtrue       |
| a &#124;&#124; b|〜または    |aかbのどちらかがtrueの場合にtrue  |
|! a     | 〜ではない    |aがtrueでないときにtrue       |  

###サンプルコード

```java
        // 「a >= 5」と「a <= 20」のどちらも正しければ 真(true)、それ以外の場合は 偽(false) となる。
        int a = 10;
        System.out.println(a >= 5 && a <= 20);

        // 「b > 20」と「c < 30」のどちらかが正しければ 真(true)、どちらも正しくない場合は 偽(false) となる。
        int b = 10;
        int c = 20;
        System.out.println(b > 20 || c < 30);

        // 「d < 20」の結果が「!」によって否定される。
        int d = 10;
        System.out.println(!(d < 20));
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613675/b41c3186-7797-16c7-5215-52998875f62f.png)

###式の評価の優先順位
式の評価は、演算子の優先順位に従いながら、**左から行われます。**
複数の演算子が含まれる式を記述する場合、どの順番で計算が行われるのか注意。

```java
a > 10 || b < 20
```
こういった式があったの順序はこのようになります。

1. > と <
2. &#124;&#124;

##おわりに
演算子はたくさん種類があるようなのですが主な使い方はどの言語もかわらないのでしっかり把握しておく。

## 参考資料
- [リンクテキスト](URL)
- [文字参照(Wikipedia)](https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7)