【Java学習|豆知識】Javaプログラミングの基礎:10進数リテラルを正しく理解し、使いこなそう

導入

Javaを学習する上で、数値の表現方法である「リテラル」の理解は避けて通れません。特に、私たちが日常的に使う10進数リテラルは最も基本でありながら、型(intやlong)との関係を正しく理解していないと、意図しないコンパイルエラーやバグを招く原因になります。本記事では、10進数リテラルの正しい扱い方と、現場で役立つ注意点を解説します。

基礎知識

「リテラル」とは、ソースコードに直接記述された「値」そのものを指します。Javaにおいて、小数点を含まない数値(整数)をそのまま記述すると、デフォルトでint型として扱われます。

例えば、コードに「100」と書けば、それはint型の100です。しかし、int型の範囲(約±21億)を超える数値を扱う場合や、特定のメモリ効率を考慮する場合には、明示的に型を指定する必要があります。

実装/解決策

10進数リテラルを扱う際のポイントは、主に「long型への代入」と「読みやすさの向上」の2点です。

1. long型への代入:
int型の範囲を超える数値をリテラルで記述する場合は、末尾に「L」または「l」を付与します。これがないとコンパイラは「int型の範囲外」と判断し、エラーになります。

2. アンダースコアの活用:
Java 7から、数値の区切りにアンダースコア(_)が使えるようになりました。1,000,000のような大きな数値を記述する際、桁数を視覚的に把握しやすくなります。

サンプルプログラム

以下のコードをコピーして、動作を確認してみてください。

public class DecimalLiteralSample {
public static void main(String[] args) {
// 1. 基本的なint型リテラル
int standardInt = 12345;
System.out.println(“int値: ” + standardInt);

// 2. long型リテラル(末尾にLを付ける必要がある)
// Lを忘れるとコンパイルエラーになるため注意
long largeNumber = 1234567890123L;
System.out.println(“long値: ” + largeNumber);

// 3. アンダースコアを使用した可読性の向上
// 100万円をコード上で分かりやすく表現
int money = 1_000_000;
System.out.println(“読みやすい数値: ” + money);

// 4. var型推論での利用
// 右辺がintリテラルであれば、varはintとして推論される
var autoType = 500;
System.out.println(“varによる型推論: ” + autoType);
}
}

応用・注意点

現場でよくある失敗として、「long型に代入するつもりで、末尾のLを書き忘れる」というケースがあります。特に、定数クラス(Constants)などで数値を管理する際は、数値の範囲が将来的にintを超える可能性があるなら、最初から末尾にLを付けておくのが安全な設計です。

また、アンダースコアは「数値の先頭や末尾」には配置できません(例: _100 や 100_ は不可)。あくまで数値の間に入れる記号であることを覚えておきましょう。これらを適切に活用することで、コードの可読性を高め、数値の桁間違いによるバグを未然に防ぐことができます。

コメント

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