Javaのidentifierとは識別子のことだ。エラーで出てくるメッセージも多くは識別子になんらかの問題があることを示している。変数やメソッド名を一度確認してみよう。
他にも原因はあるので、このページではもう少々詳しくJavaのidentifierについてお伝えしていく。
そもそもJavaのidentifierとは?
Javaのidentifierという単語の意味は「識別子」である。プログラムを書くとき、クラス、変数、メソッド、ラベルを識別するためにあらかじめ名前を宣言してから使う。これらの必要に応じて宣言される名前が識別子だ。
識別子の書き方には規則がある。まず、識別子の長さに制限はないが、使用可能な文字が決まっている。
また、表からも分かるように先頭に数字を使うことはできない。
さらに、予約されている言葉であるキーワード(if, forなど)は使えない。true、false、nullなども同じく使うことはできない。
では、具体的な例を見てみよう。シンプルな名前は識別子がひとつだけである。
もうひとつは、「.」と修飾子から構成される修飾された識別子である。クラスはパッケージ名を付ける(修飾される)ことによってどのパッケージに入っているかが識別される。
また、メソッドは,オブジェクトの参照変数名を付けることによってオブジェクトのどのメソッドを呼ぶかが識別される。
この例では、ライブラリのjava.utilというパッケージに入れられたArrayListクラスを指定して使用している。また、listというオブジェクトのaddメソッドが指定されている。
では,独自にパッケージに入れられたクラスを作って,それを使う場合はどのように識別子が使われているかを実際のコードから見てみよう。
修飾された識別子のサンプルプログラム
このサンプルでは,パッケージ名carに入っているBusクラスをまず定義している。
1 2 3 4 5 |
public class Bus {//[1] public void printType() {//[2] System.out.println("[3] Bus"); } } |
では,Busクラスをどのように修飾された識別子を用いて呼び出すことができるだろうか。パッケージの後に「.」を付けて「car.Bus」と書けばよい。他方,オブジェクトbusのメソッドprintTypeを指定する場合にパッケージを指定する必要はない。
1 2 3 4 5 6 |
class PackageAndIdentifier { public static void main(String[] args) { car.Bus bus = new car.Bus();//[10] bus.printType();//[11] } } |
実行結果
1 |
[3] Bus |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] Busクラスを定義する。
- [2] printTypeメソッドを宣言する。
- [3] “Bus”を表示する。
- [10] パッケージ名carに入っているBusクラスを呼び出し,オブジェクトbusを作る。
- [11]オブジェクトbusのメソッドprintTypeを呼び出す。
識別子にエラーが見つからないとき
import文をclassの中に書いてしまっている時など同じエラーが出る。import文はclass宣言の外に書かなければいけないが、ここを発端に識別子エラーが起きることがある。
こちらも確認いただければと思う。
まとめ
このページではJavaのIdentifierについてまとめてお伝えしてきた。エラーが発生した時など、参考にしていただければ幸いだ。
今、Java SE8 Silver の問題集(黒本)をやっているのですが、
識別子で使用できる記号は、アンダースコアと通貨記号とありました。
この問題集以外は、アンダースコアと$のみ、とあります。
いつから変わったのでしょう?
「通貨記号 = $」で書いているのではと思います。引き続き変わらず、アンダースコアと$のみですね。