Javaで数値リテラルにアンダースコア(_)が使えます

こんにちは、さるまりんです。

Javaの小ネタです。

全然知らなかったのですが、Java SE 7以降は数値リテラルにアンダースコア(_)が使えるそうです。(めちゃくちゃ古い話ですが知りませんでした。。)

コードにするとこんな感じです。

int num1 = 123456789;
int num2 = 123_456_789;

System.out.println("num1 : " + num1);
System.out.println("num2 : " + num2);

実行するとこうなります。

num1 : 123456789
num2 : 123456789

意味はわかるのだけど、なんのためにこれができるのか知りたくてOracleのサイトを見てみるとこうありました。

In Java SE 7 and later, any number of underscore characters (_) can appear anywhere between digits in a numerical literal. This feature enables you, for example, to separate groups of digits in numeric literals, which can improve the readability of your code.

“improve the readability”なので「可読性を高める」目的で追加されたんですね。
数値にカンマを入れて桁がわかりやすくするためのもののようです。
上の整数値だと123456789がカンマを入れると123,456,789ですね。

桁数が多いと読みにくいですからね。

上のサイトに16進数や2進数のこんな例があります。

long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;

確かに読みやすいです。

小さいことも知れると面白い。
どれくらい使うことがあるかわからないですが、覚えておこうと思います。

読んでくださってありがとうございました。

それではまた!