Javaのお勉強 ～その2～ 変数

# 1. はじめに
今回は、変数についてお話します。
変数はプログラムにおいて、基本中の基本。
それだけ、重要で覚えておく必要があります。

ところで、数学でよく変数を使ったりしませんでしたか？
x = 1 , y = 5 の時、z = 7x + 5y の z を答えなさい。のような 笑
これを、Java でも近いような式で表現することが出来ます。

そして、変数はそのまま Java でも使うことになります。
ですが、Java では、使う変数を「**宣言する**」という工程が必要となります。
簡単に言えば、「整数の number という変数をこれから使うね！」といった感じ。
（整数の部分は、後々理解を進めるところなので、あまり気にしないでください）

# 2. 変数の宣言
では、実際にソースに変数の宣言をしてみましょうか。
そこから、以下の部分がソースコードとなり、当分は public static void main(String[] args){ } の { } の間に処理を記述していきたいと思います。
それ以外の部分も、後々理解を進めるとことなります。今は、無視しておいてもらうと助かります。 

```java:Main.java
public class Main {
	public static void main(String[] args) {

		// 変数の宣言
		int number;

	}
}
```

「int number;」というのが宣言している箇所です。
これから、整数の number という変数を使うのでコンピュータは用意しておけー！といった感じですね 笑
（// 以降の一行はコメントといい、プログラムには関係ありません）

「**型 変数名;**」
例）型 = int, 変数名 = number

これが、宣言するときの基本的な形となります。
型が int で、変数名が number の部分になります。 
（ちなみに、int は整数を扱うための型です。文字や小数は使えないです。後々の回でご紹介します）


# 3. 代入
そして、変数には「**値を代入する**」ということができます。
はじめに記載した「x = 1」や「y = 5」のようなもの。

では、実際にしてみましょう。 

```java:Main.java
public class Main{
  public static void main(String[] args){
 
    // 変数の宣言
    int number;
    // number に 1 を代入
    number = 1;
 
  }
}
```

number に「1」を代入してみました。（出力は行っていないので何も表示されません）
number を変数と呼ぶのに対して、 「1」というソース上に直接書かれた値は、別の呼ばれ方をします。
1 や 80 や 70 など、そのままの値のこと「**リテラル**」といいます。 

また、宣言と代入を一行にまとめて記述することもできます。
この場合は「**変数の初期化**」と言います。

```java:Main.java
public class Main {
	public static void main(String[] args) {

		// 変数の宣言と number に 1 を代入
		int number = 1;

	}
}
```


# 4. 変数の出力
変数の代入だけでは味気ないので、標準出力(コンソール)に出力してみましょう。
画面表示は、前回の[Javaのお勉強 ～その1～ Hello World 4.処理の始まり](https://qiita.com/koukonko/items/98d36c3bae2f5e119bd7#4-%E5%87%A6%E7%90%86%E3%81%AE%E5%A7%8B%E3%81%BE%E3%82%8A)にも出てきました。

「System.out.println();」こんなやつです。
この()内に、先ほど宣言と代入した変数を入れ込むと変数の保持する値を表示してくれます。

```java:Main.java
public class Main {
	public static void main(String[] args) {

		// 変数の宣言と number に 1 を代入
		int number = 1;

		// 画面に number の値を表示する
		System.out.println(number);

	}
}
```

以上のプログラムを実行すると「1」と表示されます。

# 5. 値の変更
「変数」というぐらいですから、値の変更を行ってみましょー

```java:Main.java
public class Main {
	public static void main(String[] args) {

		// 変数の宣言と number に 1 を代入
		int number = 1;

		// number に 10 を代入する
		number = 10;

		// 画面に number の値を表示する
		System.out.println(number);

	}
}
```

上のプログラムにさらに一行追加してみました。「number = 10;」の部分ですね。
この一行で number に入っていた「1」という値を「10」という値に変更することになります。
「1」は、上書きされて消えてしまいますので、ご注意を...

実行してみると、コンソールには「10」と表示されます。
これは number が「10」を保持している証拠ですね。

ここまでが基本的な変数の使い方になります。

# 6. 宣言について
変数などの宣言には、決まりがあります。
変数名などには、使えない名前やおすすめしない名前などがあります。
また、今後いろんなものに対して、名前を付けていくことがあるので、それらも含めて紹介します。
分からない単語があるかと思いますが、初めてのうちは、スルーで 笑

## 6.1. 宣言のルール
以下のルールは必ず守らなければいけないものになり、間違えた書き方をするとエラーとなります。

### 6.1.1. 命名規則
名前を付けるときに、守らなくてはならない規則をまず紹介します。
名前を付けるときは、「 $ 」「 _ 」「 英字 」「 数字 」が使用可能です。
ですが、「 数字 」を先頭文字にはできません。
また、下の予約語を名前としてしようすることや、すでに使っている名前は使用出来ません。 

OKな例）\_number , firstName , kou$kon_ko
NGな例）1_number , 100 , "string"

### 6.1.2. 予約語
Java の文法上などの理由で使うことができない名前の一覧です。
また、null , true , false も使用不可です。 

<table>
<thead>
<tr>
    <th colspan="5" text-align="center">予約語一覧</th>
<tr>
</thead>
<tbody>
<tr>
    <td>abstract</td>
    <td>assert</td>
    <td>boolean</td>
    <td>break</td>
    <td>byte</td>
</tr>
<tr>
    <td>case</td>
    <td>catch</td>
    <td>char</td>
    <td>new</td>
    <td>class</td>
</tr>
<tr>
    <td>const</td>
    <td>case</td>
    <td>continue</td>
    <td>default</td>
    <td>do</td>
</tr>
<tr>
    <td>double</td>
    <td>else</td>
    <td>enum</td>
    <td>extends</td>
    <td>final</td>
</tr>
<tr>
    <td>finally</td>
    <td>float</td>
    <td>for</td>
    <td>goto</td>
    <td>if</td>
</tr>
<tr>
    <td>implements</td>
    <td>import</td>
    <td>instanceof</td>
    <td>int</td>
    <td>interface</td>
</tr>
<tr>
    <td>long</td>
    <td>native</td>
    <td>new</td>
    <td>package</td>
    <td>private</td>
</tr>
<tr>
    <td>protected</td>
    <td>public</td>
    <td>return</td>
    <td>short</td>
    <td>static</td>
</tr>
<tr>
    <td>strictfp</td>
    <td>super</td>
    <td>switch</td>
    <td>synchronized</td>
    <td>this</td>
</tr>
<tr>
    <td>throw</td>
    <td>throws</td>
    <td>transient</td>
    <td>try</td>
    <td>void</td>
</tr>
<tr>
    <td>volatile</td>
    <td>while</td>
</tr>
</tbody>
</table>

## 6.2. 宣言のおすすめ
以下は、必ずではありませんが、プログラミングする上で分かりやすくするためのものになります。
（開発の現場ごとにおすすめがルールとなっていたりして、異なることもあります）

### 6.2.1. 変数名
小文字を使い、複数の単語を使用する場合は、2つ目以降の単語の頭文字を大文字にする。

例 ) story , member , bookStore , programNo 

### 6.2.2. クラス名
単語の頭文字を大文字にする。
複数の単語を使用する場合も、頭文字は大文字で...

例 ) Computer , Navigator , ConcreateAggregate 

### 6.2.3. メソッド名
小文字を使い、複数の単語を使用する場合は、2つ目以降の単語の頭文字を大文字にする。
これも、変数と同じような名前の付け方ですね。

一般的には「動詞」または「動詞 + 名詞」として命名します。
「動詞 + 名詞」は「名詞」の先頭の文字が大文字になりますね。

例 ) wait , send ←「動詞のみ」
例 ) getNumber, setName ←「動詞 + 名詞」

### 6.2.4. 定数名
単語すべて大文字を使用する。
複数の単語を使用する場合は、「 _ 」でつなげる。

例 ) MAX_SIZE , FILE_NO , ARRAY_SIZE 


# 7. おわりに
とりあえず、以上となります。
少し長くなってしまいました。それにあまりつまらない話ばかりで、申し訳ない...

これから、勉強を進めていく上で覚えている必要はありますが、ゆっくり覚えていきましょう。

次回は「型」について説明したいと思います。

次回 →「[Javaのお勉強 ～その3～ 型](https://qiita.com/koukonko/items/e2714f404b9e369b01b7)」