整数を扱う型として、Javaにはint型やlong型が用意されています。 このページではちょっと難しく思えるlong型の使い方をint型と比較しながら解説します。
long型とint型の違いを理解しておく
まず、long型とint型で扱える数字の使用範囲について理解しておくことが重要です。
- Int型:-2147483648 ~ 2147483647 まで
- long型:-9223372036854775808 ~ 9223372036854775807 まで
このように比較すると一目瞭然ですが、long型ではint型と比べて扱える数値がグンと多くなるんですね。
ここの部分がlong型を定義するうえでのポイントになりますので覚えておきましょう。
long型の定義の仕方
では、上記の数値範囲を踏まえたうえでlong型を定義して使えるようにする方法を見ていきます。
実は、ざっくり分けると三通りの書き方があります。
- long a = 2147483647; ※ aという変数に2147483647を代入して定義
- long b = 2147483648l; ※ bという変数に2147483648を代入して定義
- long c = 2147483649L; ※ cという変数に2147483649を代入して定義
はい。どれも正しい宣言になりますが、それぞれの違いや規則性がわかったでしょうか?
- a は、int型でも扱える数字のため「l」や「L」を付けなくても定義できる
- b は、int型では扱えずlong型だけ使える数字なので末尾に「l」を付けて定義する
- c は、末尾に小文字ではなく大文字の「L」を付けて定義している
こういったパターンで3種類の定義方法で宣言しています。
例えば、
- long l = 2147483648;
と定義すると、エラーになりますが…
- long l = 2147483648l; ← 小文字か大文字のエルを追記する
このように定義しなおすと、エラーが消えて、正式に定義できるようになるイメージですね。
もうお分かりだと思いますが、
long型で変数に数値を入れて宣言するときは、Int型で扱える数値の範囲内なら、自動的に型を忖度してくれるために「l」や「L」を付ける必要はありません。(付けても問題はありません。)
でも、int型の守備範囲を超えて、まさにlong型でしか扱えない数値を変数に入れて宣言する場合には、必ず「l」や「L」を付けなければいけません。
大文字・小文字に関しては、どちらでも構いというスタンスですね。
long型で「l」や「L」をつける・つけないの法則まとめ
というわけで、long型を使う場合はどんな時に「l」や「L」を付けなければいけないのか、付ける必要がないケースはどういう時か理解できたんじゃないかと思います。
簡単にまとめると、
- int型・long型のどちらでも扱える数値なら「l」や「L」は書く必要なし
- long型だけの数値範囲の場合は「l」や「L」を付けて宣言する必要がある
このように整理しておくとわかりやすいかもしれません。
わかってしまえば、「なーんだっ♪」て感じですよね^^