.net column

.NET開発者のためのブログメディア

Javaのint型で扱える最大の値とは?

2020年06月04日

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型で扱える値について理解を深めましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)