※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

3. 字句構造

3.1. Unicode

3.2. 字句変換

3.3. Unicodeエスケープ

3.4. 行終端子

3.5. 入力要素とトークン

3.6. 空白

3.7. コメント

3.8. 識別子

識別子(identifier)とはJava文字で始まりJava文字や数字が続く長さに制限のない列です。

Identifier:
  IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral

IdentifierChars:
  JavaLetter
  IdentifierChars JavaLetterOrDigit

JavaLetter:
  any Unicode character that is a Java letter (see below)

JavaLetterOrDigit:
  any Unicode character that is a Java letter-or-digit (see below)

"Java文字"とは、メソッドCharacter.isJavaIdentifierStart(int)trueを返す文字です.

"Java文字や数字"とは、メソッドCharacter.isJavaIdentifierPart(int)trueを返す文字です.

"Java文字"にはASCIIラテン大文字A~Z(\u0041\u005a)および小文字a~z(\u0061\u007a)と、歴史的理由から、ASCIIアンダースコア(_、\u005f)とドル記号($、\u0024)が含まれます。$は機械的に生成されたソースコードの中でのみ使用されるべきです。またまれに、レガシーシステムの既存名へのアクセスでも使われます。

"Java数字"にはASCII数字0~9(\u0030\u0039)が含まれます.

文字と数字はUnicode文字集合のどの文字をとってきても構いません。Unicode文字集合は今日の世界中のほんどの文章で使われる文字、中国語や日本語、韓国語の大きな集合を含む、をサポートしています。これによりプログラマーがプログラム中の識別子を母国語で表記できます。

キーワードブールリテラルヌルリテラルと同じスペル(Unicode文字列で)の識別子は使えません。

2つの識別子は等価すなわちどの文字や数字のUnicode文字も同じである場合にのみ同一とします。外観上同じに見える識別子でも異なるものである場合があります。

例えば、LATIN CAPITAL LETTER A (A、\u0041)、LATIN SMALL LETTER A (a、\u0061)、GREEK CAPITAL LETTER ALPHA (A, \u0391)、CYRILLIC SMALL LETTER A (a、 \u0430)およびMATHEMATICAL BOLD ITALIC SMALL A (a、\ud835\udc82)で表される1文字の識別子は全て互いに異なります。

Unicode複合文字(composite character)はそれと等しい分解した文字列とは異なる識別子と判断します。例えば、LATIN CAPITAL LETTER A ACUTE (Á、\u00c1)という識別子はLATIN CAPITAL LETTER A (A、\u0041)とそれに続くNON-SPACING ACUTE (´、\u0301)という識別子とは異なります。Unicode規格の3.11節"Normalization Forms"を参照してください。

以下は識別子の例です。:
  • String
  • i3
  • αρετη
  • MAX_VALUE
  • isLetterOrDigit

3.9. キーワード

3.10. リテラル

3.11. 分離子

3.12. 演算子