Javaクラス名で有効な文字は何ですか?他のルールが支配するものはJavaクラス名(たとえば、Javaクラス名前を数字で始めることはできません)?
ほとんどのUnicode文字を含む、ほぼすべての文字を使用できます!正確な定義は the Javaセクション3.8の言語仕様:識別子 にあります。
識別子は、Java文字とJava数字の長さ無制限のシーケンスです、最初の文字はJava文字でなければなりません。 ...
Unicode文字セット全体から文字と数字が描画される場合があります。これにより、プログラマーは、ネイティブ言語で記述されたプログラムで識別子を使用できます。
識別子のスペル(Unicode文字シーケンス)をキーワード(§3.9)、ブールリテラル(§3.10.3)、またはヌルリテラル(§3.10.7)と同じにすることはできません。そうしないと、コンパイル時エラーが発生します。
ただし、それを行うべきかどうかは この質問 を参照してください。
すべてのプログラミング言語には、使用が許可されている名前の種類に関する独自のルールと規則があり、Javaプログラミング言語も同じです。変数の命名規則と規則次のように要約できます。
変数名では大文字と小文字が区別されます。変数の名前は、文字、ドル記号「$」、またはアンダースコア文字「_」で始まるUnicode文字と数字の無制限のシーケンスである任意の有効な識別子です。ただし、慣例では、変数名は常に「$」や「_」ではなく、文字で始まります。また、慣例により、ドル記号はまったく使用されません。自動生成された名前にドル記号が含まれる場合がありますが、変数名では常に使用しないでください。アンダースコア文字にも同様の規則があります。変数の名前を「_」で始めることは技術的には合法ですが、この方法はお勧めしません。空白は許可されていません。
後続の文字は、文字、数字、ドル記号、またはアンダースコア文字です。規則(および常識)もこの規則に適用されます。変数の名前を選択するときは、わかりにくい略語の代わりに完全な単語を使用してください。そうすることで、コードが読みやすく、理解しやすくなります。多くの場合、コードは自己文書化されます。たとえば、cadence、speed、gearという名前のフィールドは、s、c、gなどの短縮バージョンよりもはるかに直感的です。また、選択する名前はキーワードまたは予約語であってはならないことに注意してください。
選択した名前が1つのWordのみで構成されている場合、そのWordをすべて小文字で綴ります。複数のWordで構成されている場合、後続の各Wordの最初の文字を大文字にします。 gearRatioおよびcurrentGearという名前は、この規則の代表的な例です。変数に
static final int NUM_GEARS = 6
などの定数値が格納されている場合、規則はわずかに変わり、すべての文字を大文字にし、後続の単語をアンダースコア文字で区切ります。慣例により、アンダースコア文字は他の場所で使用されることはありません。
公式Javaチュートリアル から。
以前の回答に加えて、次のことに注意する価値があります。
$ var1£var2€var3
通貨記号の使用は、コンパイラによってコードに追加される変数が従来「$」で始まっていたC/C++に由来すると考えています。 Javaの明白な例は、内部クラスの '.class'ファイルの名前で、慣例により 'Outer $ Inner.class'の形式になっています。
比較する:
class Employee:パブリックIPayable // C++
と
class Employee:IPayable // C#
そして
クラスEmployeeはPayable // Javaを実装します
private double _salary;
小さな少数派は、アンダースコアをフィールド名の後に置きます。
private double salary_;
Jason Cohenがすでに述べたように、Java Language Specificationは、セクション3.8で有効な識別子を定義しています。
「識別子は、Java文字とJava数字。最初の文字はJava = letter。[...]「Java letter」は、Character.isJavaIdentifierStart(int)メソッドがtrueを返す文字です「Java letter-or-digit」は、Character.isJavaIdentifierPart(intメソッドが)はtrueを返します。」
これで2番目の質問に答えることができます。最初の質問について。私は教師と(覚えている限り)JavaコンパイラーにJavaクラス名は大文字のAZですが、これに関する信頼できるソースは見つかりませんOpenJDKで試してみると、小文字または$記号でクラス名を開始するときに警告はありません。ただし、bashシェルからコンパイルする場合はエスケープする必要があります。
有効な通貨文字はすべて、Javaの識別子に対して有効であるというbosnicの答えに加えたいと思います。これは合法的な識別子であり、これも同様です。しかし、彼または彼女の回答を編集する方法がわからないため、この些細な追加を投稿せざるを得ません。
Javaクラス名(たとえば、Javaクラス名は数字で始めることはできません)?
クラス名はUpperCamelCaseの名詞で、すべてのWordの最初の文字を大文字にします。単語全体を使用する-頭字語や略語を避けます(略語がURLやHTMLなどの長い形式よりもはるかに広く使用されている場合を除く)。命名規則はここで読むことができます:
http://www.Oracle.com/technetwork/Java/codeconventions-135099.html
識別子は、クラス名、メソッド名、変数名に使用されます。識別子は、大文字と小文字、数字、またはアンダースコアとドル記号の任意の説明的なシーケンスです。数字で始まらないようにしてください。数字リテラルと混同しないようにしてください。繰り返しますが、Javaは大文字と小文字が区別されるため、VALUEはValueとは異なる識別子です。有効な識別子の例を次に示します。
AvgTemp、カウントa4、$ test、this_is_ok
無効な変数名は次のとおりです。
2カウント、高温、Not/ok