Javaのint型で扱える最大の値とは?
- SE
- Javaのint型で扱える最大の値とは、どのようなものなのでしょうか?
- PM
- 一般的な使用頻度の高い整数のint型を中心に、整数型の値の範囲をご紹介していきましょう。
目次
Javaのint型とは?
Javaプログラム内で変数を宣言するときには、型を指定する必要があります。変数の型は、その変数で取り扱うデータの形式と値の範囲を考慮して決めます。この記事では、Javaの各種基本型についての概要を示し、一般的な使用頻度の高い整数のint型を中心に、整数型の値の範囲について書いていきます。
Javaの基本データ型の種類
Javaでは、基本型(プリミティブ型)と呼ばれる8種類の型が定義されています。基本型は、変数に格納される値の種類を表すものです。基本型は8種類あり、「整数型」「浮動小数点型」「文字型」「論理型」に分類することができます。それぞれのデータ型と扱う値を表に示します。
分類 | データ型 | 値の種別 |
---|---|---|
整数型 | byte, short, int, long | 整数 |
浮動小数点型 | float, double | 小数 |
文字型 | char | 1文字 |
論理型 | boolean | 真(true)または偽(false) |
整数型には、byte、short、int、longの4種類があります。通常は特に区別をせずintを使用することが多いでしょう。それぞれの型について、サイズや値の範囲を知っておくと役立ちます。
Javaのint型で扱える整数の範囲とは?
Javaには、基本データ型の種類がいくつかあることがわかりました。ここからは、整数型の中で一般的に使われる機会の多いintについて、値の範囲を説明していきます。
Javaのint型は4バイトの符号付き整数
Javaの基本型は、それぞれサイズが決まっています。int型のサイズは4バイト=32ビットです。これは、どんな環境でも変わりません。他のプログラミング言語では、型のサイズが常に同じとは限りません。C言語では、対象とする計算機上での性能を引き出すことを考慮するために、intのサイズは処理系依存です。C言語でも現在intの一般的なサイズは4バイトですが、昔の計算機では2バイトで処理される場合もあり、int型で扱える範囲は一定ではありません。また、Javaのintは符号付き整数型です。C言語のunsignedのように符号なし型を扱う修飾子は、Javaにはありません。
32ビットで表現できる整数値
変数の値は、計算機上では0と1のビット値の並びで表現されています。nビットで表現できる数の個数は、2のn乗です。32ビットの場合には2の32乗、約43億通りになります。符号付き整数の内部表現では、正負の区別を表す符号ビットがあります。nビットで表現できる値は、負の整数が半分の2の(n-1)乗個、残り半分が0と正の整数です。nビットの符号付き整数で表現できる値の範囲は、-2n-1 ~ 2n-1-1となります。Javaのintは32ビットの符号付きの整数型ですから、値の範囲は、-231 ~ 231-1つまり-2147483648 ~ 2147483647です。int型で扱える最大の値は、2,147,483,647(およそ21億5千万)となります。
最大値を超えた場合の挙動(オーバーフロー)
int型の最大値を超えた数を代入しようとすると、どのような結果が出るのか確認してみます。次のプログラム例では、int型の変数nの初期値として、intの最大値に近い値を設定しています。そこから、ループ内でnの値を1ずつ増加させ、nの値を出力しています。public class OverflowTest { public static void main(String[] args) { int n = 2147483645; for (int i = 0; i < 5; i++) { n += 1; System.out.println(“”n = “” + n); } }}出力結果は、次のようになりました。n = 2147483646n = 2147483647n = -2147483648n = -2147483647n = -2147483646int型の最大値である2147483647を超えるとオーバーフロー(桁あふれ)が発生し、nの値はint型の最小値である負の整数-2147483648となってしまうのがわかります。このように演算結果が最大値を超える、または最小値を下回る場合には、本来求めたい結果が得られないということになります。扱う値がint型の範囲に収まらない可能性がある場合には、より大きな範囲を扱うlong型を使用するなどの対応が必要です。
最大値を表すMAX_VALUE
プログラム中で、型の最大値・最小値を利用したい場合があります。例えば、値が最大値に達したら、オーバーフロー防止のために処理を停止する場合などが考えられます。このような場合には最大値・最小値を直接書くのではなく、定数を利用します。Javaでは、整数の各型に対して、MAX_VALUEとMIN_VALUEというフィールドで参照できる定数が用意されています。intでは、Integer.MAX_VALUEとInteger.MIN_VALUEです。これらの定数を出力するプログラム例を示します。public class MaxMinInt { public static void main(String[] args) { System.out.println(“”int型の最大値: “” + Integer.MAX_VALUE); System.out.println(“”int型の最小値: “” + Integer.MIN_VALUE); }}上のプログラムを実行すると、出力結果は次のようになり、上で説明したintの範囲と一致することを確認できました。int型の最大値: 2147483647int型の最小値: -2147483648
各種整数型の値の範囲は?
Javaの整数型にはint以外にbyte、short、longがあります。これらの型も含めた各整数型の値の範囲と、最大値・最小値を参照する定数をまとめておきます。
各整数型で表現できる値の範囲
Javaの各整数型の値の範囲は、byteは8ビットで-128から127まで、shortは16ビットで-32,768から32,767までとなります。intは32ビットで-2,147,483,648から2,147,483,647まで、およそ±21億5千万です。intは一般的に利用される型のため、この範囲を超える可能性がなければintを利用するのがよいでしょう。longは64ビットで、-9,223,372,036,854,775,808から9,223,372,036,854,775,807まで、およそ±920京です。それぞれの型のサイズと値の範囲を次の表にまとめます。
整数型 | サイズ | 最小値 | 最大値 |
---|---|---|---|
byte | 8ビット | -128 | 127 |
short | 16ビット | -32768 | 32767 |
int | 32ビット | -2147483648 | 2147483647 |
long | 64ビット | -9223372036854775808 | 9223372036854775807 |
最小値・最大値を表す定数
Javaでは、int型と同様に、各型に対応して最小値と最大値を表す定数が用意されています。最小値にはMIN_VALUE、最大値にはMAX_VALUEという名前が用意されています。それぞれの型に対応する記述方法を表にまとめます。
整数型 | 最小値 | 最大値 |
---|---|---|
byte | Byte.MIN_VALUE | Byte.MAX_VALUE |
short | Short.MIN_VALUE | Short.MAX_VALUE |
int | Integer.MIN_VALUE | Integer.MAX_VALUE |
long | Long.MIN_VALUE | Long.MAX_VALUE |
- SE
- Javaのint型で扱える値について、詳しく理解できました。
- PM
- Javaプログラム内で変数を宣言するときに必要なので、しっかり理解を深めておきましょう!
Javaのint型で扱える値について理解を深めよう
ここまで、Javaの基本型や、最大の値、値の範囲などについて解説してきましたが、いかがでしたか。Javaには8種類の基本型があり、整数型はbyte、short、int、longの4種類です。一般的によく使われる整数型はintで、そのサイズは32ビット、値の範囲は-2,147,483,648から2,147,483,647まで、およそ±21億5千万です。Javaのint型で扱える値について理解を深めましょう。