2. キーワード
Javaでは、いくつかの単語はソースコードを解析するのに必要なもののため、識別子(ソースコードを書く人が名付けれる名前)として使えないようになっています。例えば「class」はクラスの宣言をするための特別な意味があり、予約語になっています。そのため、それらのキーワードを識別子などに使うとコンパイルエラーになります。ただし「class1」のようにキーワードに何らかの文字を付け足すと、予約している単語とは別の単語として扱われるため識別子として使うことが可能になります。
2.1. 予約語
予約語は下記のものが定義されています。
byte | short | int | long | float |
double | char | boolean | void |
class | interface | enum | package | import |
extends | implements | this | super | new |
public | protected | private | static | final |
abstract | native | volatile | transient | synchronized |
strictfp |
if | else | switch | case | default |
for | while | do | break | continue |
return | instanceof | assert |
try | catch | finally | throw | throws |
const | goto |
また、どれが予約語なのかは、Eclipseで開発している場合だと予約語を入力すると赤紫色(色の設定がデフォルトの場合)の太字で表示され、記述していけない箇所に記述していると、その単語の下に波線がでてエラーであることを表示してくれます。その際はその識別子を別の名前にしてください。
2.2. 予約語以外の識別子として使えない単語
Javaでは「true」「false」「null」は、すでにその単語自体にプログラム上の意味があるもののため識別子として使うことはできません。
3. 識別子
Javaで指定しているキーワードや記号のほかに、クラス名や変数名などソースコードを書く人がつける名前があります。これを識別子といい、ソースコードを読む際に、そのクラスやデータやメソッドが何を表しているのか、人が分かりやすいように名付けられるようにしています。
また業務アプリの開発の場合、不特定多数の人が別々にソースコードを書いても、ある程度の統一感があるように、ネーミング・ルールという、その開発プロジェクトで独自の識別子を命名するルールがあることがあります。その際はそのネーミング・ルールに従わなければいけませんが、まずは一般的にどのように識別子が名付けられているのかを見てみましょう。
3.1. 識別子として使える文字
識別子として使える文字は制限されています。識別子として使える文字は、下記のものになります。
- アルファベットやUnicodeの全角文字や半角カナ(※全角の空白も全角文字とみなされます)
- 数字
- 「_」アンダースコア
- 「$」ドル
ただし、Javaではクラス名や変数名など、識別子の最初の一文字目を数字にすることはできません。
また、「$」はJavaがコンパイルした際に自動生成したクラスなどで使われることはありますが、人が命名する識別子で使われることは一般的にはありません。
同様に、Javaではクラス名や変数名に日本語を使うこともできますが、業務で使うプログラムではアルファベットと数値のみを使っているところがほとんどです。また一般的にJavaでは「_」を識別子として使うことは可能ですが、後述する定数でないものに対して単語と単語をつなげるために使うことはありません。複数の単語をあわせた識別子の場合、2つ目以降の単語の最初の文字を大文字にする書式(キャメルケース)を使って命名することが一般的になっています。例えば、システム日付を表す「system」と「date」をあわせた識別子を作成する場合は「systemDate」と名付けることになります。
3.2. 大文字と小文字
Javaではアルファベットの大文字と小文字を区別することに注意してください。例えば識別子に「name」と「NAME」の2つがあった場合、それらはお互い違うものとして認識されます。
3.3. 空白、タブ文字、改行
Javaでは、半角の空白とタブ文字および改行は、ソースコード上に記述された単語を区切るものとして使われます。ただし全角の空白は文字としてみなされるため、単語同士を全角空白でつなげ合わせても、1つの単語としてみなされるので注意してください。