77

Java クラス名で有効な文字は? Java クラス名を制御するその他のルールは何ですか (たとえば、Java クラス名は数字で始めることはできません)。

4

8 に答える 8

64

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

識別子は、 Java文字Java数字の無制限の長さのシーケンスであり、最初の文字はJava文字である必要があります。..。

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

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

ただし、それを行う必要があるかどうかについては、この質問を参照してください。

于 2008-09-15T18:37:06.583 に答える
15

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

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

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

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

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

于 2008-09-15T18:41:17.010 に答える
11

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

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

$var1 £var2 €var3

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

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

比較:

class Employee : public IPayable //C++

class Employee : IPayable //C#

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

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

プライベート ダブル _salary;

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

プライベート二重給与_;

于 2008-09-15T19:49:12.247 に答える
5

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

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

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

于 2012-06-26T14:20:21.890 に答える
2

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

于 2008-09-15T19:27:18.413 に答える
1

Java クラス名を制御するその他のルールは何ですか (たとえば、Java クラス名は数字で始めることはできません)。

  • Java クラス名は通常、大文字で始まります。
  • Java クラス名は数字で始めることはできません。
  • 「MyClassName」のようにクラス名に複数の単語がある場合、各単語は大文字で始める必要があります。例-「MyClassName」。この命名規則はキャメルケースタイプに基づいています。
于 2017-02-18T19:19:52.567 に答える
0

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

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

于 2015-01-18T15:55:09.270 に答える