はじめに
Java の基本文法を学ぶときに必ず出てくるのが
「プリミティブ型のサイズと範囲」 というテーマ。
- int はどこまで入るの?
- byte はなぜ -128〜127?
- float と double の違いって?
こうした疑問は、型のサイズと範囲を知るだけでスッと解決します。
この記事では、やさしく・実務寄りに
プリミティブ型のサイズと範囲を整理していきます。
まずはコードを確認
Java
System.out.println(Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
System.out.println(Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
System.out.println(Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
System.out.println(Float.MIN_VALUE + " ~ " + Float.MAX_VALUE);
System.out.println(Double.MIN_VALUE + " ~ " + Double.MAX_VALUE);コードのしくみを解説
Java のプリミティブ型は 8 種類
Java のプリミティブ型は次の 8 つ。
| 型 | サイズ | 範囲 |
|---|---|---|
| byte | 1バイト | -128 ~ 127 |
| short | 2バイト | -32,768 ~ 32,767 |
| int | 4バイト | 約 -21億 ~ 21億 |
| long | 8バイト | 約 -9京 ~ 9京 |
| float | 4バイト | 約 ±3.4E38 |
| double | 8バイト | 約 ±1.7E308 |
| char | 2バイト | 0 ~ 65535(Unicode) |
| boolean | 1ビット相当(実装依存) | true / false |
整数型(byte / short / int / long)の範囲は「2の補数」で決まる
Java の整数型は 2の補数表現 を使っています。
たとえば byte(1バイト = 8ビット)の場合:
-128 ~ 127
これは、
- 最上位ビットが符号ビット
- 残りのビットで値を表す
という仕組みから決まります。
イメージ:
- 8ビットのうち1ビットが「+か−か」
- 残り7ビットで値を表す
- だから範囲が左右対称ではない(-128 ~ 127)
浮動小数点型(float / double)は「範囲が広いが誤差が出る」
float と double は 指数表現(科学技術計算の形式) を使っています。
- float:4バイト
- double:8バイト(精度が高い)
Java
float f = 0.1f;
double d = 0.1;実務では double を使うのが基本 です。
char は「文字」ではなく「Unicode の番号」
Java の char は 2バイト固定で、
0〜65535 の Unicode を表します。
Java
char c = 'A'; // 65
char j = 'あ'; // 12354boolean はサイズが明確に決まっていない
Java の仕様では boolean のサイズは明記されていません。
実装上は 1ビット相当ですが、実際には 1バイト以上使われることもあります。
あわせて知っておきたいポイント
int は「標準の整数型」
Java では整数を扱うとき、基本は int を使います。
- メモリ効率
- 計算速度
- 実務での扱いやすさ
すべてのバランスが良いからです。
long は「大きな数値」を扱うときに使う
Java
long population = 8000000000L;末尾に L をつけるのを忘れないように。
float は「精度が低い」ので注意
Java
float f = 0.1f;
System.out.println(f); // 0.10000001 のような誤差が出ることも実務では金額計算に使わないようにします。
ラッパークラスで最大値・最小値を確認できる
Java
System.out.println(Integer.MAX_VALUE);
System.out.println(Long.MIN_VALUE);試験でも実務でも便利です。
使うときに気をつけたいこと
- 整数型の範囲は 2の補数で決まる
- float は誤差が出るので注意(double 推奨)
- long リテラルには L をつける
- char は Unicode の番号
- boolean のサイズは実装依存
実務では「型の範囲を超えてオーバーフローした」 というバグが意外と多いです。
まとめ
プリミティブ型のサイズと範囲
- byte:1バイト(-128 ~ 127)
- short:2バイト
- int:4バイト(標準)
- long:8バイト
- float:4バイト(誤差あり)
- double:8バイト(実務の標準)
- char:2バイト(Unicode)
- boolean:true / false
実務での使い分け
- 整数 → int
- 大きな整数 → long
- 小数 → double
- 文字 → char
- 真偽値 → boolean

decopon
プリミティブ型のサイズと範囲は、 「なんとなく覚える」よりも 「なぜそうなるのか」を知ると理解が深まります。Java Bronze の試験でも、実務のデータ処理でも、 ここを押さえておくと安心してコードが書けます。
あなたの学びが、次のステップにつながりますように。

moco
byte が -128 ~ 127 なのは、
“2の補数”っていう仕組みのせいなんだって。
ちょっと数学っぽいけど、知ってるとスッキリするよ。

コメント