質問

Java クラス名で有効な文字は何ですか?Java クラス名を管理する他の規則は何ですか (たとえば、Java クラス名を数字で始めることはできません)?

役に立ちましたか?

解決

ほとんどの Unicode 文字を含む、ほぼすべての文字を使用できます。正確な定義は次のとおりです Java 言語仕様のセクション 3.8:識別子.

アン 識別子 は長さ無制限のシーケンスです Java文字 そして Java の数字, 、最初のものは Javaレター. ...

文字と数字は Unicode 文字セット全体から描画できます。これにより、プログラマは母国語で書かれたプログラムで識別子を使用できるようになります。

識別子は、キーワード (§3.9)、ブール リテラル (§3.10.3)、または null リテラル (§3.10.7) と同じスペル (Unicode 文字シーケンス) を持つことはできません。そうしないと、コンパイル時エラーが発生します。

ただし、参照 この質問 それをすべきかどうかについて。

他のヒント

すべてのプログラミング言語には、使用できる名前の種類に関する独自のルールと規則があり、Java プログラミング言語も例外ではありません。変数に名前を付けるルールと規則は、次のように要約できます。

  • 変数名では大文字と小文字が区別されます。変数の名前には、文字、ドル記号 "$"、またはアンダースコア文字 "_" で始まる、Unicode 文字と数字の無制限の長さのシーケンスである法的な識別子を使用できます。ただし、変数名は「$」や「_」ではなく、常に文字で始めるのが慣例です。さらに、慣例により、ドル記号はまったく使用されません。状況によっては、自動生成された名前にドル記号が含まれる場合がありますが、変数名では常にドル記号の使用を避ける必要があります。アンダースコア文字にも同様の規則が存在します。変数名を「_」で始めることは技術的には合法ですが、この方法はお勧めできません。空白は許可されません。

  • 後続の文字には、文字、数字、ドル記号、またはアンダースコア文字を使用できます。慣例 (および常識) もこのルールに適用されます。変数の名前を選択するときは、わかりにくい略語ではなく完全な単語を使用してください。そうすることで、コードが読みやすく、理解しやすくなります。多くの場合、コードを自己文書化することもできます。たとえば、ケイデンス、スピード、ギアという名前のフィールドは、s、c、g などの短縮形よりもはるかに直感的です。また、選択する名前はキーワードや予約語であってはいけないことにも注意してください。

  • 選択した名前が 1 つの単語のみで構成されている場合は、その単語をすべて小文字で綴ってください。複数の単語で構成される場合は、後続の各単語の最初の文字を大文字にします。gearRatio と currentGear という名前は、この規則の主な例です。変数に次のような定数値が格納されている場合、 static final int NUM_GEARS = 6, では、規則が若干変更され、すべての文字が大文字になり、後続の単語がアンダースコア文字で区切られます。慣例により、アンダースコア文字は他の場所では使用されません。

から 公式 Java チュートリアル.

以前の回答に加えて、次のことに注目する価値があります。

  1. Java ではシンボル名に Unicode 通貨記号を使用できるため、以下はすべて機能します。

$ var1£var2€var3

通貨記号の使用は C/C++ に由来すると思います。C/C++ では、コンパイラーによってコードに追加される変数は従来、「$」で始まりました。Java におけるわかりやすい例は、内部クラスの '.class' ファイルの名前です。慣例により、'Outer$Inner.class' という形式になります。

  1. 多くの C# および C++ プログラマは、インターフェイス (C++ の純粋な仮想クラスとも呼ばれます) の前に「I」を置く慣例を採用しています。Java ではこれは必須ではないため、実行されません。これは、implements キーワードによって、何かがインターフェイスであることが非常に明確になるためです。

比較する:

クラス従業員:パブリックIPayable //C++

クラス従業員:IPayable //C#

そして

class Employee は Payable を実装します //Java

  1. 多くのプロジェクトでは、ローカル変数やパラメータと簡単に区別できるように、フィールド名の前にアンダースコアを置くという規則を使用しています。

プライベートダブル_salary;

ごく少数ですが、フィールド名の後にアンダースコアを置きます。

プライベート倍増給与_;

Jason Cohen がすでに述べたように、Java 言語仕様では、セクション 3.8 で法的識別子とは何かを定義しています。

「識別子は、Java文字とJava Digitsの無制限の長さのシーケンスであり、最初はJava文字でなければなりません。[...] 「Java 文字」は、Character.isJavaIdentifierStart(int) メソッドが true を返す文字です。「Java 文字または数字」は、Character.isJavaIdentifierPart(int) メソッドが true を返す文字です。

これで 2 番目の質問の答えが得られると思います。最初の質問に関しては、私は教師と (私が覚えている限り) Java コンパイラーの両方から、Java クラス名は大文字の A ~ Z で始まる識別子であるべきだと教えられてきましたが、これに関する信頼できるソースが見つかりません。OpenJDK で試してみると、クラス名の先頭が小文字や $ 記号であっても警告は表示されません。ただし、bash シェルからコンパイルする場合、$ 記号を使用する場合はエスケープする必要があります。

bosnic の回答に、有効な通貨文字は Java の識別子として有効であることを追加したいと思います。this は、this や € と同様に、法的な識別子です。しかし、私は彼または彼女の回答を編集する方法がわからないので、この些細な追加を投稿せざるを得ません。

Java クラス名を管理する他の規則は何ですか (たとえば、Java クラス名を数字で始めることはできません)?

  • Java クラス名は通常、大文字で始まります。
  • Java クラス名を数字で始めることはできません。
  • 「MyClassName」のようにクラス名に複数の単語が含まれる場合、各単語は大文字で始める必要があります。例: "MyClassName"。この命名規則は以下に基づいています。 キャメルケース タイプ。

クラス名は、すべての単語の最初の文字を大文字にした UpperCamelCase の名詞である必要があります。単語全体を使用します。頭字語や略語は避けてください (略語が URL や HTML などの長い形式よりも広く使用されている場合を除く)。命名規則はここで読むことができます:

http://www.oracle.com/technetwork/java/codeconventions-135099.html

識別子はクラス名、メソッド名、変数名に使用されます。識別子は、大文字と小文字、数字、またはアンダースコアとドル記号の任意の説明的なシーケンスです。数値リテラルと混同しないように、数値で始めることはできません。繰り返しますが、Java では大文字と小文字が区別されるため、VALUE は Value とは異なる識別子になります。有効な識別子の例をいくつか示します。

AvgTemp 、カウント a4 、$test 、this_is_ok

無効な変数名には次のものがあります。

2カウント、高温、Not/OK

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top