変数名の制約
変数 (基本型)で変数について詳しくみましたが、この変数の名前の付け方には制約があります。今回は変数名の制約についてみていきます。
変数とは
プログラミングにおいて、変数(へんすう、variable)とは、プログラムのソースコードにおいて、扱われるデータを 一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。 一人一人の人間が異なる名前によって区別されるように、一つ一つの変数も名前によって区別される。これにより、複数のデータを容易に識別することができ る。変数を区別するための名前を特に識別子という。また一般に、変数が表しているデータをその変数の値(あたい)という。
変数名に使用可能な文字
| 種類 | 文字 |
|---|---|
| アルファベット | abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| 数字 | 0123456789 |
| 一部の記号 | _(アンダーバー) $ |
基本的にはアルファベットと数字です。そこに記号はアンダーバーと「$」だけが認められています。実は変数名に漢字や仮名を使うことができるのですが、日本語が表示できる環境でないと出力できないのでお勧めできません。また、php言語などでは変数の行頭に「$」をつけて変数であることを示していますが、Javaでは基本つけません。「$」は処理系が内部的に識別子を自動生成する為に準備されているのでユーザ自身が「$」は基本つけないようです。
先頭文字は数字ではいけない
Javaでは変数名の文字数は1文字でも構いません。もし変数名を「1」としてしまったらこの「1」は変数名? リテラル? とわからなくなってしまいます。でも2文字以上でアルファベットを混ぜたら文字列はダブルクォーテーションで囲む必要があるので変数とリテラルは区別できるのですが、Javaの変数制約では先頭数字は駄目らしいです。
予約語は使えない
| 予約語一覧 | ||||
|---|---|---|---|---|
| abstract | boolean | break | byte | case |
| catch | char | class | const | continue |
| default | do | double | else | enum |
| extends | final | finally | float | for |
| goto | if | implements | import | instanceof |
| int | interface | long | native | new |
| package | private | protected | public | return |
| short | static | strictfp | super | switch |
| synchronized | this | throw | throws | transient |
| try | void | volatile | while | |
プログラム言語の構成要素としての構文や関数、メソッドなどは変数名として使うことができません。Javaが既に意味をもたせて利用している語句なので「予約語」です。たとえば分岐処理で利用する 「if 」を変数名で利用できたら この「if」は構文の「if」か変数の「if」か混乱してしまいます。既に別の意味として使われている語句は変数名として使うことはできません。
リテラルは使えない
空リテラルの「null」は変数名として使えません。予約語と同様、「null」は空リテラルという意味をもって利用されているので変数名で使えてしまうと空リテラルなのか変数なのかわからなくなります。論理型リテラルの「ture」と「false」は変数名として使えました。変数名か論理型リテラルかわからなくならないのかと試しにコード書いて確かめたら変数の値が無視されました。変数名「true」で値を「10」格納させて printlnで出力させたら「true」と表示されました。変数に格納はできるが出力できない現象が発生します。「true」も「false」も変数名としては使わないほうがいいです。
アルファベットの大文字と小文字は区別される
アルファベットの大文字と小文字は区別されます。なので「if 」は予約語なので使えませんが「IF」は変数名として使えます。
文字数制限
変数名に文字数制限はありません。
2010 年 2 月 10 日 水曜日 【 カテゴリー: Javaの基本 】
