Unicodeのデコードは、他の字句変換の前に行われます。これの主な利点は、ASCIIと他のエンコーディングの間を行き来するのが簡単になることです。コメントの始まりと終わりを把握する必要さえありません!
JLSセクション3.3で述べたように、これにより、ASCIIベースのツールでソースファイルを処理できます。
[...] Javaプログラミング言語は、プログラムをASCIIベースのツールで処理できる形式に変更する、Unicodeで記述されたプログラムをASCIIに変換する標準的な方法を指定します。[...]
これにより、常にJavaプラットフォームの主要な目標であったプラットフォームの独立性(サポートされる文字セットの独立性)が根本的に保証されます。
ファイル内の任意の場所に任意のUnicode文字を書き込むことができることは、きちんとした機能であり、非ラテン語でコードを文書化するときのコメントでは特に重要です。このような微妙な方法でセマンティクスに干渉する可能性があるという事実は、(不幸な)副作用にすぎません。
このテーマには多くの落とし穴があり、Joshua BlochとNeal GafterによるJava Puzzlersには次のバリアントが含まれていました。
これは合法的なJavaプログラムですか?もしそうなら、それは何を印刷しますか?
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d
(このプログラムは単純な「Hello World」プログラムであることが判明しています。)
謎を解くための解決策として、彼らは次のことを指摘しています。
さらに真剣に、このパズルは前の3つのレッスンを強化するのに役立ちます。Unicodeエスケープは、プログラムに他の方法では表現できない文字を挿入する必要がある場合に不可欠です。他のすべてのケースではそれらを避けてください。
出典:Java:コメントでコードを実行していますか?!