目次 | 前 | 次 | 索引 | Java言語規定 第2版 |
プログラムはUnicode(3.1)で記述されるが,字句変換が提供されるため(3.2) ,Unicodeエスケープ(3.3)を使用することによって,ASCII文字だけを使用して任意のUnicode文字を表現できる。 行番号の整合性を維持しながら,既存のホストシステムによって異なる行終端の扱いをサポートするために,行終端子を定義する(3.4)。
字句変換の結果のUnicode文字は,空白類(3.6),注釈(3.7)及びトークンのいずれかとする,入力要素(3.5)の並びへ還元される。 トークンは,構文文法の識別子(3.8),キーワード(3.9),リテラル(3.10),分離子(3.11) 及び演算子(3.12)とする。
Javaプログラム言語の1.1より前の版では,Unicode 1.1.5が使用されていた(The Unicode Standard: Worldwide Character Encoding(1.4)及びその改訂情報を参照)。 それからJDK 1.1.7より前の版では,Unicode 2.0が使用されていた。 JDK 1.1.7からはUnicode 2.1が使用されている。 Javaプラットホームは,Unicode標準が改訂されたなら,それに合わせて改訂する計画である。 特定の版で使用しているUnicodeの正確な版は,クラスhttp://www.unicode.org
Character
のドキュメンテーション中に規定されている。
注釈(3.7),識別子,文字リテラル及び文字列リテラルの内容 (3.10.4,3.10.5)を除き,プログラム中のすべての入力要素(3.5)は,ASCII文字(又は,結果としてASCII文字へ変換されるUnicodeエスケープ(3.3))だけから構成される。 ASCII(ANSI X3.4)は,the American Standard Code for Information Interchangeの短縮形とする。 Unicode文字符号化の最初の128文字は,ASCII文字となっている。
\u
xxxxの形式のUnicodeエスケープは,xxxxという符号化のUnicode文字を表現する。
この変換ステップによって,任意のプログラムはASCII文字だけを使用して記述できる。
a--b
は,a
,-
,-
,b
へトークン化すると文法的に正しいプログラム部分になるにもかかわらず,文法的に正しいプログラム部分とはならなくても,a
,--
,b
へトークン化する(3.5)。
参考 ISO/IEC 10646における文字"逆スラッシュ"は,日本ではしばしば"円記号"(¥)として表示されることがある点に注意する。
\u
の後に4個の16進数字が続いた場合,その16進数値によって示されるUnicode文字へ変換し,他のすべての文字は変更せずに渡す。
この変換ステップは,次のようなUnicode入力文字の並びに帰着する。
UnicodeInputCharacter: UnicodeEscape RawInputCharacter UnicodeEscape:\
UnicodeMarkerHexDigit
HexDigit
HexDigit
HexDigit UnicodeMarker: u UnicodeMarker u RawInputCharacter: any UnicodeCharacter HexDigit: one of
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
\
,u
及び16進数字はすべてASCII文字とする。
文法によって要求される処理に加えて,入力処理は,元の入力文字が逆スラッシュ\
の場合,\
文字以外の文字及び入力ストリームの先頭と区別し,\
文字の前に連続して何個の\
文字が存在するかを数えなければらない。
個数が偶数の場合,\
はUnicodeエスケープを開始するのに適格とする。
個数が奇数の場合,\
はUnicodeエスケープを開始するのに適格でない。
例えば,元の入力"\\u2297=\u2297"
の変換結果は,"
\
\
u
2
2
9
7
=
"
の11個の文字となる
(\u2297
は文字のUnicode符号化とする)。
適格な\
の後にu
が続かない場合,それはRawInputCharacterとして扱われ,そしてエスケープされたUnicodeストリームの部分として残る。
適格な\
の後に一つ以上のu
が続き,最後のu
の後に4個の16進数字が伴わない場合は,コンパイル時エラーが発生する。
Unicodeエスケープによって生成された文字が,更にUnicodeエスケープとして使用されることはない。
例えば,元の入力\u005cu005a
の変換結果は,005c
がUnicode値\
を表現するので,六つの文字 \
u
0
0
5
a
となる。
\u005c
に含まれる\
は,更にUnicodeエスケープの開始として解釈されないので,変換結果は,Unicode文字005a
,つまり文字Z
にはならない。
Javaプログラム言語は,Unicodeで書かれたプログラムをASCIIに変換する標準的な方法,つまり,ASCIIベースのツールで処理できる形式へプログラムを変換する標準的な方法を規定する。
この変換には,余分のu
を追加することで,プログラムのソーステキスト内の任意のUnicodeエスケープからASCIIへの変換が含まれる。
例えば,\u
xxxxは\uu
xxxxとなる。
一方,この変換と同時に,ソーステキスト中の非ASCII文字は,単一のu
を含む\u
xxxxエスケープへ変換する。
この変換された版は,Javaプログラム言語のコンパイラ("Javaコンパイラ")に同等に受け付けられ,まったく同じプログラムを表現する。
複数u
を含むエスケープシーケンスは,一つだけ少ないu
をもつUnicode文字の並びへ変換し,同時に,単一のu
をもつ各エスケープシーケンスは対応する単一のUnicode文字へ変換することで,このASCII形式からまったく同じUnicodeソースへ後に戻すことができる。
実装は,適切なフォントが利用できない場合,Unicode文字を表示するために,出力形式として\u
xxxx記法を使用することが望ましい。
//
形式の注釈(3.7)の終端も規定される。
行は,ASCII文字のLineTerminator: ASCIIのLF
文字 (いわゆる"改行") ASCIIのCR
文字 (いわゆる"復帰") ASCIIのCR
文字に続くASCIIのLF
文字 InputCharacter: UnicodeInputCharacter but notCR
orLF
CR
,LF
及びCR LF
によって終端される。
CR
と後続のLF
の二つの文字は,2個の行終端子ではなく,1個の行終端子として数える。
結果は行終端子及び入力文字の並びであり,それらはトークン化プロセスの3番目に対する終端記号となる。
空白類(3.6)及び 注釈(3.7)は,隣接するトークンを結合して別のトークンとする可能性がある場合,トークンを分割する役割を果たすことができる。 例えば,入力中のASCII文字Input: InputElementsoptSubopt InputElements: InputElement InputElements
InputElement InputElement: WhiteSpace Comment Token Token: Identifier Keyword Literal Separator Operator Sub: ASCIIの
SUB
文字 (いわゆる"control-Z")
-
及び=
は,それらの間に空白類又は注釈が存在しない場合だけ,演算子トークン-=
(3.12)を形成することができる。
ある種のオペレーティングシステムとの互換性を特に考慮して,ASCIIのSUB 文字(\u001a
又はcontrol-Z)がエスケープされた入力ストリームの最後の文字ならば,それは無視される。
結果の入力ストリーム中に二つのトークンx及びyがある場合を考える。 xがyの前にある場合,xはyの左側 (to the left of)にあり,及びyはxの右側 (to the right of)にあるという。
例えば,次の単純なコードの場合を考える。
例のように紙の上に二次元的に表現したとき,class Empty { }
}
トークンが{
トークンの左下側にあった場合でも,{
の右側にあるという。
左及び右という単語の使用法に関するこの慣例によって,例えば,二項演算子の右辺オペランドとか,代入の左辺とか言う。
WhiteSpace: ASCIIのSP
文字 (いわゆる"スペース") ASCIIのHT
文字 (いわゆる"文字タブ") ASCIIのFF
文字 (いわゆる"書式送り") LineTerminator
これらの注釈は,次の生成規則によって形式的に規定される。/*
text*/
従来の注釈: ASCII文字/*
からASCII文字*/
までの すべてのテキストが無視される(C及びC++と同じ)。//
text 行末注釈: ASCII文字//
から行末までのすべてのテキスト が無視される(C++と同じ)。
Comment: TraditionalComment EndOfLineComment TraditionalComment:これらの生成規則は,次の特性を暗に含んでいる。/ *
NotStar CommentTail EndOfLineComment:/ /
CharactersInLineopt LineTerminator CommentTail:*
CommentTailStar NotStar CommentTail CommentTailStar:/
*
CommentTailStar NotStarNotSlash CommentTail NotStar: InputCharacter but not*
LineTerminator NotStarNotSlash: InputCharacter but not*
or/
LineTerminator CharactersInLine: InputCharacter CharactersInLine InputCharacter
結果として,次のテキストは単一の完全な注釈となる。
/* this comment /* // /** ends here: */
この字句文法は,文字リテラル(3.10.4)又は文字列リテラル(3.10.5)の中に注釈が書けないことを意味する。
Identifier: IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral IdentifierChars: JavaLetter IdentifierChars JavaLetterOrDigit JavaLetter: Java字(後述)の任意のUnicode文字 JavaLetterOrDigit: Java字又はJava数字(後述)の任意のUnicode文字字及び数字は,全Unicode文字集合から引用できる。 全Unicode文字集合は,中国語,日本語及び朝鮮語(チョソノ)のための大量の文字集合を含む,現在の世界で使用されているほとんどの表記文字をサポートしている。 これによって,プログラマは,プログラム中の識別子を自国語で記述することができる。
"Java字"とは,メソッドCharacter.isJavaIdentifierStart
がtrue
を返す文字とする。
"Java字又はJava数字"とは,メソッドCharacter.isJavaIdentifierPart
がtrue
を返す文字とする。
Java字には,ASCIIラテン文字の大文字・小文字,つまり,A
-Z
(\u0041
-\u005a
)及びa
-z
(\u0061
-\u007a
),並びに,歴史的な理由によって,ASCIIの下線 (_
又は\u005f
)及びドル記号($
又は\u0024
)が含まれる。
$
文字は,機械的に生成されたソースコードにおいてだけ,又は,まれには,過去のシステム上の既存の名前にアクセスするためだけに使用することが望ましい。
"Java数字"は,ASCIIの数字0-9
(\u0030
-\u0039
)を含む。
二つの識別子は,それらが同一な場合,つまり,各文字又は数字に対して同じ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
)の各1文字から構成される識別子はすべて異なる。
Unicode合成文字は,それを分解した文字とは異なる。
例えば,LATIN CAPITAL LETTER A ACUTE (Á,
\u00c1
)は,ソーティングにおいて,LATIN CAPITAL LETTER A (A
, \u0041
)の後にNON-SPACING ACUTE (´, \u0301
)を続けたものと同じと見なされるが,識別子としては異なる。
文字分解の詳細については,The Unicode Standard, Volume 1の412ページ以降を,ソーティングの詳細については626〜627ページを参照のこと。
String i3 MAX_VALUE isLetterOrDigit
Keyword: one of abstract default if private this boolean do implements protected throw break double import public throws byte else instanceof return transient case extends int short try catch final interface static void char finally long strictfp volatile class float native super while const for new switch continue goto package synchronized
キーワードconst
及びgoto
は,現在は使用されていないが,予約されている。
これらのC++言語のキーワードがプログラム中に誤って現れた場合,Javaコンパイラが適切なエラーメッセージを出力できる。
true
及びfalse
はキーワードと考えることができるが,文法的に厳密に考えて論理値リテラル(3.10.3)とする。
同様に,null
もキーワードと考えることができるが,文法的に厳密に考えてnullリテラル(3.10.7)とする。
String
型(4.3.3)及び空型(4.1)の値のソースコード表現とする。
Literal: IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral NullLiteral
整数リテラル (integer literal)は,10進数(基数 10),16進数(基数 16),又は8進数(基数 8)で表現できる。
IntegerLiteral:
DecimalIntegerLiteral
HexIntegerLiteral
OctalIntegerLiteral
DecimalIntegerLiteral:
DecimalNumeral IntegerTypeSuffixopt
HexIntegerLiteral:
HexNumeral IntegerTypeSuffixopt
OctalIntegerLiteral:
OctalNumeral IntegerTypeSuffixopt
IntegerTypeSuffix: one of
l L
整数リテラルは,ASCII文字L
又はl
(エル)を
接尾辞としてもつ場合,long
型とする。
それ以外の場合は,int
型(4.2.1)とする。
文字l
(エル)は数字の1
と紛らわしいため,接尾辞L
を使用するのが望ましい。
10進数とは,一つのASCII文字0
だけからなるか,又は1
から9
までの一つのASCII数字及びそれに続く0
から9
までの一つ以上のASCII数字からなる。
前者は,整数0を表し,後者は正整数を表す。
DecimalNumeral:
0
NonZeroDigit Digitsopt
Digits:
Digit
Digits Digit
Digit:
0
NonZeroDigit
NonZeroDigit: one of
1 2 3 4 5 6 7 8 9
16進数値は,先頭のASCII文字0x
又は0X
,及びその後に続く一つ以上のASCIIの16進数字からなり,正整数,0,又は負整数を表す。
10から15までの値をもつ16進数の数字はそれぞれa
からf
又はA
からF
までのASCII文字によって表される。
16進数字として使用される各文字は,大文字又は小文字でもよい。
HexNumeral:
0 x HexDigits
0 X HexDigits
HexDigits:
HexDigit
HexDigit HexDigits
明確化のために,3.3の生成規則を次に繰り返し示す。
HexDigit: one of
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
8進数値は,ASCII数字0
の後に一つ以上の0
から7
までのASCII数字を続けたものとし,正整数,0,負整数を表現することができる。
OctalNumeral: 0 OctalDigits OctalDigits:8進数値は,常に二つ以上の数字からなることを注意されたい。 つまり,OctalDigit OctalDigit OctalDigits OctalDigit: one of
0 1 2 3 4 5 6 7
0
は常に10進数の数値と見なされる。
数値の0
,00
及び0x0
はまったく同じ整数値を表現するが,違いが実際に問題となることはない。
int
型の10進リテラルで最も大きい値は,2147483648
(231)とする。
0
から2147483647
までのすべての10進リテラルは,int
リテラルが使用できる場所ならどこでも使用できるが,リテラル2147483648
は,単項マイナス演算子-
のオペランド以外の場所では使用できない。
int
型の16進及び8進リテラルで最も大きな正の値はそれぞれ,0x7fffffff
及び017777777777
とする。
この値は,2147483647
(231-1)に等しい。
int
型の16進及び8進リテラルで最も小さな負の値はそれぞれ,0x80000000
及び020000000000
とする。
この値は,10進数値の-2147483648
(-231)に等しい。
16進及び8進リテラルの0xffffffff
及び037777777777
は10進数値-1
を表現する。
int
型の10進リテラルが2147483648
(231)より大きい場合,又は,リテラル2147483648
が単項マイナス演算子-
のオペランド以外の場所に使用された場合,あるいは,16進又は8進のint
リテラルが32ビットで表現できない場合は,コンパイル時エラーが発生する。
0 2 0372 0xDadaCafe 1996 0x00FF00FF
long
型の10進リテラルで最も大きい値は,9223372036854775808L
(263)とする。
0L
から9223372036854775807L
までのすべての10進リテラルは,long
リテラルを使用できる場所ならどこでも使用できるが,リテラル9223372036854775808L
は単項マイナス演算子-
のオペランド以外では使用できない。
long
型の16進及び8進リテラルで最も大きい正の値はそれぞれ,0x7fffffffffffffffL
及び0777777777777777777777L
とする。
この値は,9223372036854775807L
(263-1)に等しい。
リテラル0x8000000000000000L
及び01000000000000000000000L
はそれぞれ,long
型の16進及び8進リテラルの最も小さい負数とする。
この値は,10進数値-9223372036854775808L
(-263)に等しい。
16進及び8進リテラル0xffffffffffffffffL
及び01777777777777777777777L
は,10進数値-1L
を表す。
long
型の10進リテラルが
9223372036854775808L
(263)より大きい場合,リテラル9223372036854775808L
が単項マイナス演算子-
のオペランド以外の場所で使用された場合,並にlong
型の16進又は8進リテラルが64ビットで表現できない場合は,コンパイル時エラーが発生する。
次にlong
型のリテラルの例を示す。
0l 0777L 0x100000000L 2147483648L 0xC0B0L
浮動小数点リテラル (floating-point literal)は,整数部,小数点(ASCII文字のピリオドによって表現される),小数部,指数部及び型接尾辞から構成される。
指数部が存在する場合は,ASCII文字e
又はE
及びその後に続く符号付き整数(符号は省略できる)によって示される。
整数部又は小数部に少なくとも数字が一つあり,小数点,指数部,指数部,又はfloat型の接尾辞のいずれかが必要とする。 他のすべての部分は省略可能とする。
浮動小数点リテラルは,ASCII文字F
又はf
の接尾辞をもつ場合,float
型とする。
それ以外の場合は,double
型とし,ASCII文字D
又はd
の接尾辞は省略できる。
FloatingPointLiteral: Digits.
Digitsopt ExponentPartopt FloatTypeSuffixopt.
Digits ExponentPartopt FloatTypeSuffixopt Digits ExponentPart FloatTypeSuffixopt Digits ExponentPartopt FloatTypeSuffix ExponentPart: ExponentIndicator SignedInteger ExponentIndicator: one of e E SignedInteger: Signopt Digits Sign: one of + - FloatTypeSuffix: one off F d D
float
型及びdouble
型の要素はそれぞれ,IEEE 754標準の32ビット単精度及び64ビット倍精度の2進数浮動小数点書式によって表現できる値とする。
浮動小数点数のUnicode文字列表現から
IEEE 754標準の内部2進数浮動小数点表現への適切な入力変換の詳細は,パッケージjava.lang
のクラスFloat
及びクラスDouble
のメソッドvalueOf
に記述されている。
float
リテラルで,最も大きい正の有限値は,3.40282347e+38f
とする。
float
型の非ゼロのリテラルで,最も小さい正の有限値は,1.40239846e-45f
とする。
double
リテラルで,最も大きい正の有限値は,1.79769313486231570e+308
とする。
double
型の非ゼロのリテラルで,最も小さい正の有限値は,4.94065645841246544e-324
とする。
非ゼロの浮動小数点リテラルが非常に大きな値のため,内部表現への丸め変換においてIEEE 754標準の無限大となる場合,コンパイル時エラーが発生する。
プログラムでは,1f/0f
又は-1d/0d
などの定数式か,クラスFloat
及びDouble
の
定義済み定数POSITIVE_INFINITY
及びNEGATIVE_INFINITY
を使用することによって,コンパイル時エラーを発生させることなく,無限大を表現できる。
非ゼロの浮動小数点リテラルが非常に小さな値のため,内部表現への丸め変換においてIEEE 754標準のゼロとなる場合,コンパイル時エラーが発生する。 非ゼロの浮動小数点リテラルが小さな値をもつが,内部表現への丸め変換において非ゼロの非正規化数となる場合は,コンパイル時エラーは発生しない。
Not-a-Number値を表現する定義済み定数として,クラスFloat
及びDouble
にFloat.NaN
及びDouble.NaN
が定義されている。
1e1f 2.f .3f 0f 3.14f 6.022137e+23f
次にdouble
リテラルの例を示す。
浮動小数点リテラルを10進数以外で表現する方法は提供されていない。 しかし,クラス1e1 2. .3 0.0 3.14 1e-9d 1e137
Float
のメソッドintBitsToFloat
及びクラス Double
のメソッド longBitsToDouble
を使用して,16進又は8進整数リテラルによって浮動小数点値を表現する方法が提供される。
Double.longBitsToDouble(0x400921FB54442D18L)
boolean
型は,ASCII文字から作られるリテラルtrue
及びfalse
によって表現される二つの値をもつ。
論理値リテラル (boolean literal)は常にboolean
型とする。
BooleanLiteral: one of
true false
\u0027
とする。
CharacterLiteral:エスケープシーケンスの定義は,3.10.6を参照のこと。'
SingleCharacter' '
EscapeSequence'
SingleCharacter: InputCharacter but not'
or\
3.4に規定されているように,文字CR
及びLF
は,InputCharacterではなく,LineTerminatorを構成するものとして認識される。
SingleCharacter又はEscapeSequenceに続く文字が
'
以外の場合は,コンパイル時エラーとする。
開始の'
から終了の'
の間に行終端子がある場合,コンパイル時エラーとする。
Unicodeエスケープは初期のステップで処理されるため,改行(LF)の値を表現する文字リテラルとして'a' '%' '\t' '\\' '\'' '\u03a9' '\uFFFF' '\177' '' ''
'\u000a'
と書くことは正しくない。
Unicodeエスケープ\u000a
は,変換ステップ1 (3.3)で実際の改行へ変換され,その改行はステップ2 (3.4)でLineTerminatorに変換されるので,この文字リテラルはステップ3で無効となる。
そのため,Unicodeエスケープの代わりに,エスケープシーケンス'\n'
(3.10.6)と書くのがよい。
同様に,復帰(CR
)を表現する文字リテラルとして'\u000d'
と書くことは正しくない。
代わりに,'\r'
を使うのがよい。
C及びC++では,文字リテラルは一つ以上の文字からなる表現を含んでいてもよいが,そのような文字リテラルの値は実装によって異なる。 Javaプログラム言語では,文字リテラルは常に1個の文字だけを表現する。
文字列リテラルは,常にString
型(4.3.3)とする。
文字列リテラルは,常にクラスString
の同一インスタンス(4.3.1)を参照する。
StringLiteral:エスケープシーケンスの定義は,3.10.6を参照のこと。"
StringCharacteropt"
StringCharacter: StringCharacter StringCharacter StringCharacter StringCharacter:InputCharacter but not
"
or\
EscapeSequence
3.4に規定されているように,文字CR
及びLF
は InputCharacterではなく,LineTerminatorを構成するものとして認識される。
開始の"
からそれに対応する終了の"
との間に行終端子が存在する場合はコンパイル時エラーとする。
長い文字列リテラルは,常により短い固まりに分割でき,文字列連結演算子+
(15.18.1)を使用して,式(括弧も使用できる)として記述することができる。
Unicodeエスケープは早いステップで処理されるため,一つの改行(LF)を含む文字列リテラルとして"" // 空文字列 "\"" // "だけを含む文字列 "This is a string" // 16文字を含む文字列 "This is a " + // 実際は,二つの文字列リテラルから構成される "two-line string" // 文字列を値とする定数式
"\u000a"
と書くのは正しくない。
そのUnicodeエスケープ\u000a
は,変換ステップ1(3.3)で実際の改行に変換され,その改行はステップ2(3.4)でLineTerminatorに変換されるので,この文字列リテラルはステップ3で無効となる。
Unicodeエスケープの代わりに,"\n"
(3.10.6)と書くのがよい。
同様に,一つの復帰(CR)を含む文字列リテラルとして"\u000d"
と書くのは正しくない。
代わりに,"\r"
を使う。
各文字列リテラルは,クラスString
(4.3.3)のインスタンス(4.3.1,12.5)への参照(4.3)とする。
String
オブジェクトは,定数値をもつ。
文字列リテラル(より一般的には,定数式(15.28)の値となる文字列)は,メソッドString.intern
を使用して,一意なインスタンスを共有するために"intern"される。
したがって,testプログラムが,次のコンパイル単位(7.3)
及び次のコンパイル単位から構成される場合,package testPackage; class Test { public static void main(String[] args) { String hello = "Hello", lo = "lo"; System.out.print((hello == "Hello") + " "); System.out.print((Other.hello == hello) + " "); System.out.print((other.Other.hello == hello) + " "); System.out.print((hello == ("Hel"+"lo")) + " "); System.out.print((hello == ("Hel"+lo)) + " "); System.out.println(hello == ("Hel"+lo).intern()); } } class Other { static String hello = "Hello"; }
このプログラムは次の出力を生成する。package other; public class Other { static String hello = "Hello"; }
この例は,次の六つの項目を説明している。true true true true false true
String
オブジェクト(4.3.1)への参照を表現する。
String
オブジェクトへの参照を表現する。
String
オブジェクトへの参照を表現する。
参考 internは,指定されたStringオブジェクトの正準形式を返すメソッドである。
EscapeSequence:エスケープシーケンス中の逆スラッシュの後の文字が,ASCIIの\ b /* \u0008:
後退
BS
*/ \ t /* \u0009:
文字タブ
HT
*/ \ n /* \u000a:
改行
LF
*/ \ f /* \u000c:
書式送り
FF
*/ \ r /* \u000d:
復帰
CR
*/ \ " /* \u0022:
二重引用符" */ \ ' /* \u0027:
一重引用符' */ \ \ /* \u005c:
逆スラッシュ\ */
OctalEscape/* \u0000
から\u00ff
まで。8進表現値。*/
OctalEscape:\
OctalDigit\
OctalDigit OctalDigit\
ZeroToThree OctalDigit OctalDigit OctalDigit: one of0 1 2 3 4 5 6 7
ZeroToThree: one of0 1 2 3
b
,t
,n
,f
,r
,"
,'
,\
,0
,1
,2
,3
,4
,5
,6
及び7
でない場合は,コンパイル時エラーとする。
Unicodeエスケープ\u
は,初期のステップ(3.3)で処理される。
(8進エスケープはC言語との互換性のために提供されるが,\u0000
から\u00FF
までのUnicode値しか表現できない。
そのためUnicodeエスケープを使用するのが一般的に望ましい。)
参考 この規定では,Unicodeエスケープが表現する文字の名前を原規定に従って示した。 しかし,次の表に示すとおり,Unicode Standard,ISO/IEC 10646,JIS X 0211,JIS X 0201,及びJIS X 0208では,幾つかの文字に対して異なる名前が用いられているので注意すること。
Unicodeエスケープ | この規定の文字名 | Unicode,ISO/IEC及びJISの文字名 |
---|---|---|
\u0022 | 二重引用符 (double quote) | 引用符 (QUOTATION MARK) |
\u0027 | 一重引用符 (single quote) | アポストロフィー (APOSTROPHE) |
\u005c | 逆スラッシュ (backslash) | 逆斜線 (REVERSE SOLIDUS) |
null
によって表現される。
空リテラル (null literal)は,常に空型とする。
NullLiteral:
null
Separator: one of
( ) { } [ ] ; , .
Operator: one of
= > < ! ~ ? :
== <= >= != && || ++ --
+ - * / & | ^ % << >> >>>
+= -= *= /= &= |= ^= %= <<= >>= >>>=
目次 | 前 | 次 | 索引 | Java言語規定 第2版 |