2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】数値リテラル内のアンダースコア

Last updated at Posted at 2020-12-10

Javaにおいて数値リテラル内にアンダースコアを書く理由

についてまとめました。

なぜアンダースコアを書くのか

一言でいうと

数値リテラルの桁の集まりを分離することで、コードの可読性を向上させることができるからです。

例えば、下記の2つの宣言は同義になります。


int i1 = 123456789;
//アンダースコアを挿入した変数
int i2 = 123_456_789;

//2つの変数が正しいか確認する
System.out.println(i1 == i2);
true

【説明】

Java 7以降、プリミティブな数値リテラルの数字のグループを区切るために、1以上のアンダースコア「_ 」を使用して可読性を向上させることができました。

重要なことなので先にいうと、配置の出来ないルールが大まかに2つあります。

  • リテラルの先頭と末尾には記述ができない
  • 記号の前後には記述ができない

細かなルールについては下記で説明する。

アンダースコアを配置できる場所

アンダースコアを配置できるのは桁の間のみです。

アンダースコアを配置できない場所

次の場所にアンダースコアを配置することはできません。

  • 数値の先頭または末尾
  • 浮動小数点リテラルの小数点の隣
  • FまたはL接尾辞の前
  • 数字の文字列が想定されている場所

数値の先頭または末尾

番号の先頭または終わりに、配置することは出来ません

_123_456_789 または 123_456_789_ など

浮動小数点リテラルの小数点の隣

リテラル浮動小数点の小数点に隣接して、配置することは出来ません

1._23 または 3_.1415F など

FまたはL接尾辞の前

FまたはL接尾辞に先立ち配置することは出来ません

9999999_L または 999_99_9999_L など

数字の文字列が想定されている場所

数字の文字列が期待されている位置で、配置することは出来ません

0_xFFFF など

【まとめ】

厳密には4つのルールがあるが、まずは以下の2点を覚えておこう。

  • リテラルの先頭と末尾には記述ができない
  • 記号の前後には記述ができない

参考文献・記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?