JAVA　基本文法[1] - 変数宣言の文

変数宣言の文とは、新たな変数を準備せよとコンピュータに指示する文のこと。
_変数：_ データを格納するためにコンピュータ内部に準備する箱。データを入れたり取り出したりできる。変数の実体はコンピュータのメモリにある区画。変数に値を入れると実際にはメモリに値が書き込まれる。

```Main.java
//例
public class Main {
  public static void main(String[] args) {
    int age; //←変数宣言(ageとう変数を用意)
    age = 30;
    System.out.println(age);
  }
}
/*上記の実行結果は、
30
*/
```
上記では、変数ageを宣言した後、変数ageに値「30」を入れ、それを取り出して表示する命令文になっている。
変数に値を入れることを、「代入」。取り出すことを「取得」するという。宣言後にのみ、代入と取得は可能となる。

::: note info
命令宣言の文
型 変数名;
:::
必ず、変数名（データを入れる箱の名前）と型（データを入れる箱の種類や大きさ）を指定する。

###### 変数の名前
変数のみに関わらず、名前をつけることがあり、それらの名前として使える文字や数字の並びのことを「識別子」という。

変数名は基本自由だが、一定の制約がある。
・アルファベット、数字、アンダースコア、ドル記号などの組み合わせが一般的。平仮名/漢字は使わないのがベター。
・予約語を使用してはならない。約50個。（例.int,long)
予約語の詳細↓
https://www.javadrive.jp/start/const/index7.html#section1
・すでに利用している変数名は使ってはいけない。
・大文字/小文字、全角/半角の違いは区別されるので注意。(例.nameとNameは別物)
・小文字で始まる名詞形の名前をつける。複数の単語をつなげる場合は、２つ目以降の単語の先頭は大文字にする。（例.myAge）
・一文字a,oは避ける。
・格納される情報の内容を想像しやすく、分かりやすい変数名にする。


###### データ型
プログラムで扱うことのできるデータの種類のことを、「データ型（型）」という。

|  分類  |  型名  |  格納するデータ  | 変数宣言の例 | 利用頻度 |
|:------:|:------:|:------------|:------------|:------:|
| 整数 | byte        | とても小さな整数 |byte glasses;//所持する眼鏡の数| |
| 〃    | short       | 小さな整数     |short age;//年齢|  |
| 〃    | int         | 普通の整数  　  |int salary;//給与金額| 高 |
| 〃  | long       | 大きな整数     |long worldPeople;//世界の人口|  |
| 小数   | float     | 少し曖昧でも良い整数 |float weght;//体重||
| 〃   | double     | 普通の小数      |double pi;//円周率|普通|
| 真偽値 | boolern     | trueかfalse |boolern isError;//エラーか否か|普通|
| 文字 | char     | 1つの文字     |char initial;//イニシャル1文字||
|　文字列　| String     | 文字の並び      |String name;//自分の名前|高|

●整数を格納できる４つの型（byte、short、int、long）
これらの違いは、箱の大きさ（コンピュータ内部で準備されるメモリの量）にある。
| 格納可能な整数の範囲 | 　   型名  　   | 消費メモリ |
|:----------------:|:------------:|:-------:|
|      ±約128      |     byte     |　　　1バイト　　　 |
|     ±約3.2万     |     short    |　　　2バイト　　　 |
|      ±約21億     |      int     |　　　4バイト　　　 |
|     ±約900京     |     long     |　　　8バイト　　　 |

※整数を代入したい場合、通常は「int型」を使えば問題なし！shortやbyteよりintの方が高速に処理できるコンピュータも多いため。

●小数を格納できる２つ型（float、double） 例）3.14、 -15.2
浮動小数点型と総称されることもある。
doubleの方がfloatより多くのメモリを消費するが、より厳密な計算を行える。
特別な事情がない限り、double型を使用する。
浮動小数点方式は、真に厳密な計算ができずわずかな誤差がある。そのため、金額の計算にはfloat、doubleを使ってはいけない。

●YESかNOかを格納できるboolean型
「YESかNOか」、「本当か嘘か」、「裏か表か」といった二者択一の情報を代入するための型。
真偽値型とも言う。
肯定的情報を意味する「true」、否定的情報を意味する「false」のどちらかの値のみを代入することができる。

●１文字だけ格納できる「char」型。文字列格納できる「String」型
charは、全角半角とわず、１文字を代入できる型。''で囲む。
Stringは、文字列（0文字以上の文字の集まり）を代入できる型。""で囲む。
※',"は必ず半角で！
```Qiita.java
//例
    char zodiac; zodiac = '辰';
    String name; name = "すがわら";
```

###### 変数の初期化
変数宣言と同時に値を代入することを「変数の初期化」と言う。

::: note info
変数の初期化
型 変数名 = 代入するデータ;
:::
```Qiita.java
//例
    int age = 22;
```


###### 変数の再代入（上書き）
既に値が入っている変数に代入すると、古い値は消滅し、新しい値に内容が書き換わる。
```Main.java
public class Main {
  public static void main(String[] args) {
    int age = 20; //変数の初期化
    System.out.println("私の年齢は" + age);
    age = 31;　//変数に再代入
    System.out.println("…いや、本当の年齢は" + age);
  }
}
/*実行結果
私の年齢は２０
…いや、本当の年齢は31
*/
```

###### 定数
上書きされたくない/内容を書き換えられたくない場合（内容がプログラムの動作中に書き換わる必要のない変数）に定数を利用する。
「final」を加えることで書き換え防止できる。final付きで宣言された変数を定数と呼ぶ。

::: note info
定数の宣言
final 型  定数名 = 初期値;
:::

```Qiita.java
//例
final double PI = 3.14;
```