変数宣言
2.1 変数宣言とは
変数宣言とはコンピュータに対し変数を準備させるために必要な文です。
変数とは、データを格納するためにコンピュータ内に格納しておく箱のようなもので、数値や文字列など様々な情報を格納することができます。
実際にはそういった物が作られているのではなく、コンピュータ内にあるデータの住所(メモリ)を割り当てるようなイメージになります。変数を宣言すると変数に対して住所を割り当ててその住所に指定したデータを保存するようになります。変数を呼び出すとき、その変数はデータが割り当ててある住所を出力するようになります。また、宣言した変数は文字列を扱った場合も「“”」がなくても出力することができます。実際に入力すると次のようになります。
また、変数の宣言と宣言した値を格納するのは同時に行うこともできます。
2.2 変数の名前について
変数を宣言するためには名前を決める必要があります。名前を付けるルールは基本的には自由ではありますが、通常はアルファベット、数字、アンダーバーなどで組み合わせて使うことが多いです。一応、ひらがなや漢字を含めても問題はないようですが、推奨されていないので避けましょう。
また、名前を決める際にも禁止ワードや暗黙のルールがあります。
・禁止されている単語
変数の宣言をする際に名前を決めるが、変数の名前として使用できないものがあります。
それは「予約語」と呼ばれるものです。予約語とは「int」や「public」「main」などJavaのシステム上で意味を持つものが使用できないようになっています。
一応ですが、「INT」や「PUBLIC」など大文字小文字を変えると使用できるようですが、変数の意味が読み取りづらくなるだけなので推奨しません。
・すでに使われている名前は新たに使えない
例えば「number」というint型の変数を宣言したとします。その場合、そのあとに再度「number」というInt型の変数の宣言をすることはできません。また、「number」というString型の変数の宣言は可能です。Javaでは大文字と小文字が完全に区別されており、人間には「number」と「NUMBER」や「Number」が似ているものに思えますがJavaでは全くの別もになります。ただし、こちらも混乱を招いてしまうため同じ名前の使用は推奨しません。
・名前は小文字で始まる他の人にも理解できる名前を付ける
名前の付け方にJavaとしての決まりは上記で述べたくらいですが、慣習的に変数は小文字で始まる名詞で名前を付けることが望ましいです。また、名詞をつなげて書く場合は「sumNumber」と2つ目の名詞の頭文字のみ大文字で書きます。
また、コードを書くときに楽だからと言って「a」や「A」など一文字の変数名は避けたほうが良いです。(本ブログでは説明用に一文字の変数を使用しています)
2.4 変数の上書き
変数の宣言後に同じ名前の変数を宣言することはできませんが、上書きをして同じ名前を使用していくことはできます。変数を宣言→変数の使用→変数の上書き→変数の使用 と進めると1回目の変数の使用と2回目の変数の使用では出力される内容が変わってきます。また、一度上書きをした変数は最後に上書きされたデータが常に使われるため変更前のデータは使用できません。上書き方法として次をご確認ください。
変更自体はこのようにして簡単にできますね。ただ、コードが長くなるにつれて変数の変更が多くなると後々エラーが起きたときにどこで誤った変数の変更がされているかが見つけづらくなってしまうため注意が必要です。また、Javaの規則さえ間違っていなければ数値の変更後にシステム上で数値の間違いが起きてもインタプリンタ上ではその間違えを見つけることができません。
2.5 定数の宣言
上記での注意点を踏まえて、一度数値や文字列を決めてその後絶対に変更しない(させてはいけない)ものを定数として宣言すると後から上書きができないようにすることができます。定数の宣言方法変数の宣言に「final」を付けるのみです。例文として次を確認してください。
一見、変更できるほうが何かと便利だし自分が間違えなければいいと思ってしまうかもしれません。しかし複数人でコードを書くのが通常の現場ではそれがわからない人もいるかもしれません。そういった場合に不要なエラーを減らすことができるため定数は非常に便利でもあります。例えばですが、円周率を「3.14」に設定する場合などは間違えなく値を変更することはないですね。
2.2まとめ
・変数は変数名と型名を決めて宣言を行う
・変数名は自由だが暗黙のルールがなんとなくある
・finalをつけて宣言することで後から上書きされないようにすることができる
ここまで変数の宣言について学んできた中で「int」や「String」などのデータ型が登場しましたね。次はこのデータ型について詳しく書いていこうかと思います。