Javaのint型で扱える最大の値とは?
- システム
エンジニア - Javaのint型で扱える最大の値とは、どのようなものなのでしょうか?
- プロジェクト
マネージャー - 一般的な使用頻度の高い整数の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の値を出力しています。
1
2
3
4
5
6
7
8
9
|
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);
}
}
}
|
出力結果は、次のようになりました。
1
2
3
4
5
|
n = 2147483646
n = 2147483647
n = -2147483648
n = -2147483647
n = -2147483646
|
int型の最大値である2147483647を超えるとオーバーフロー(桁あふれ)が発生し、nの値はint型の最小値である負の整数-2147483648となってしまうのがわかります。このように演算結果が最大値を超える、または最小値を下回る場合には、本来求めたい結果が得られないということになります。扱う値がint型の範囲に収まらない可能性がある場合には、より大きな範囲を扱うlong型を使用するなどの対応が必要です。
最大値を表すMAX_VALUE
プログラム中で、型の最大値・最小値を利用したい場合があります。例えば、値が最大値に達したら、オーバーフロー防止のために処理を停止する場合などが考えられます。このような場合には最大値・最小値を直接書くのではなく、定数を利用します。Javaでは、整数の各型に対して、MAX_VALUEとMIN_VALUEというフィールドで参照できる定数が用意されています。intでは、Integer.MAX_VALUEとInteger.MIN_VALUEです。これらの定数を出力するプログラム例を示します。
1
2
3
4
5
6
|
public class MaxMinInt {
public static void main(String[] args) {
System.out.println("int型の最大値: " + Integer.MAX_VALUE);
System.out.println("int型の最小値: " + Integer.MIN_VALUE);
}
}
|
上のプログラムを実行すると、出力結果は次のようになり、上で説明したintの範囲と一致することを確認できました。
1
2
|
int型の最大値: 2147483647
int型の最小値: -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 |
- システム
エンジニア - Javaのint型で扱える値について、詳しく理解できました。
- プロジェクト
マネージャー - 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型で扱える値について理解を深めましょう。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)