1. 導入: なぜlong型が重要なのか
Javaで数値を扱う際、最も頻繁に使われるのはint型ですが、int型は「約21億」までしか扱えないという制限があります。例えば、ミリ秒単位の時刻データや、巨大なID、金融取引の金額などを扱う際、int型ではすぐに桁あふれ(オーバーフロー)を起こしてしまいます。そんな時に必要になるのが、より大きな範囲を扱える「long型」です。今回は、long型の正しい使い方と、初心者が陥りやすい罠について解説します。
2. 基礎知識: long型とは何か
long型は、Javaの「プリミティブ型(基本データ型)」の一つです。
・サイズ: 64ビット(8バイト)
・表現範囲: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
これだけあれば、一般的な業務システムで扱う数値はほぼカバーできます。なお、プリミティブ型の「long」に対して、オブジェクトとして扱える「Long(ラッパークラス)」という型も存在します。リストに格納したり、nullを許容したい場合にはラッパークラスを使いますが、計算目的であればメモリ効率の良いプリミティブ型のlongを使うのが基本です。
3. 実装/解決策: long型の正しい記述方法
long型を使う際の最大のポイントは、数値の末尾に「L」または「l」を付けることです。Javaでは、整数リテラル(ソースコードに直接書いた数値)はデフォルトでint型として解釈されます。そのため、intの範囲を超える数値を書く場合は、コンパイラに「これはlong型です」と明示する必要があります。
4. サンプルプログラム
以下のコードをコピーして、動作を確認してみてください。
public class LongExample {
public static void main(String[] args) {
// intの最大値を超える場合は必ず末尾に L を付ける
long bigNumber = 3000000000L;
// 型推論 var を使用する場合(Java 10以降)
// var を使うと型を明示しなくて済むが、リテラルの L は必須
var systemTime = System.currentTimeMillis();
System.out.println("大きな数値: " + bigNumber);
System.out.println("現在のミリ秒: " + systemTime);
// 注意点: Lを付け忘れるとコンパイルエラーになる
// long errorValue = 3000000000; // これはエラー!
}
}
5. 応用・注意点: 現場で役立つヒント
・小文字の「l」は避ける:
数字の「1」と見間違えやすいため、コード上では必ず大文字の「L」を使うのがエンジニア界隈の暗黙の了解(コーディング規約)です。
・計算時のオーバーフロー:
long同士の計算であっても、結果がlongの最大値を超えると値が反転して負の数になることがあります。巨大な数値を扱う計算ロジックを組む際は、BigIntegerクラスの使用を検討しましょう。
・varを使う際の注意:
Java 10から導入された「型推論 var」は便利ですが、varを使うと一見して型が分かりにくくなります。数値リテラルを書く際は、必ず末尾に「L」を付けて、意図的にlong型であることを明示する癖を付けましょう。
これらを意識するだけで、数値に関するバグを大幅に減らすことができます。まずは手元のコードで、Lを付ける習慣を身につけてみてください。

コメント