アンダースコア「_」を使用した数値表記は、桁数の多い数値リテラルの可読性を向上させるために、Java SE 7から導入されました。
アンダースコア「_」使用時のルール
- リテラルの先頭と末尾には記述できない
- 記号の前後には記述できない(記号の例としては以下があります。)
- ドット「.」
- long型リテラルを表す「L」「l」
- float型リテラルを表す「F」「f」
- 2進数を表す「0b」
- 16進数を表す「0x」
※上記のルールに反さなければ、記述箇所や回数は自由です。
出題例
試験では以下のような問題が出題されます。
次の内、コンパイルエラーとなる式を選びなさい。 A : int a = 123_123_1; B : int b = 1_______2; C : int c = _123_123; D : int d = 123_1_; E : float e = 1._234f; F : long f = 1234_L; G : byte g = 0b01_1; H : int h = 0_12; I : int i = 0x_123;
解答:以下、赤色がコンパイルエラーとなる選択肢です。 A : int a = 123_123_1; B : int b = 1_______2; C : int c = _123_123; リテラルの先頭に「_」があるので、コンパイルエラー D : int d = 123_1_; リテラルの末尾に「_」があるので、コンパイルエラー E : float e = 1._234f; 記号「.」の後に「_」があるので、コンパイルエラー F : long f = 1234_L; 記号「L」の前に「_」があるので、コンパイルエラー G : byte g = 0b01_1; H : int h = 0_12; 8進数を表す「0」は記号とはみなされないため、問題ないコードです。 I : int i = 0x_123; 記号「0x」の後に「_」があるので、コンパイルエラー
コメント