Java では、識別子を $ (ドル記号) で開始するか、または含むことができます。例 int a$b;
しかし、# を識別子に使用できないのはなぜですか? 具体的な理由は?# は Java の演算子か何かですか? 例 int a#b;
Java では、識別子を $ (ドル記号) で開始するか、または含むことができます。例 int a$b;
しかし、# を識別子に使用できないのはなぜですか? 具体的な理由は?# は Java の演算子か何かですか? 例 int a#b;
それは、読みやすさと言語の歴史的前例の組み合わせだと思います。Java 構文は、C および C++ プログラマーにとって見やすいように設計されていることを思い出してください。(そして @dan04 が指摘しているように、この#
文字は C および C++ のほとんどの方言で重要です。)
ちなみに、$
Java 識別子では技術的には合法ですが、コンパイラ、コード ジェネレータなどで使用するために予約されています。ソース コードで in 識別子を使用する$
と、(たとえば)javac
コンパイラによって生成された合成識別子との衝突で問題が発生する危険があります。
識別子の句読点 (演算子のように見える#
可能性があります) に対する一般的な嫌悪感があったのと同じくらい、禁止する特定の理由があったとは思えません。WORD_SEPARATION および Inner$Classes を処理するために、特別な例外が作成されました。
Java の構文が基づいている C および C++ では、プリプロセッサディレクティブ#
に使用されます。
変数には、文字、数字、アンダースコア、およびドル記号を含めることができます (#、@、~ 、` を除く)
これは読みやすさのためだと思います-int s#@t;
奇妙に思えます。