アンダースコア「_」を使った数値表記

Java Silver

アンダースコア「_」を使用した数値表記は、桁数の多い数値リテラルの可読性を向上させるために、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」の後に「_」があるので、コンパイルエラー

コメント

タイトルとURLをコピーしました