【Java】プリミティブ型のサイズと範囲をやさしく解説|初心者がつまずくポイントを実務目線で整理

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

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 つ。

サイズ範囲
byte1バイト-128 ~ 127
short2バイト-32,768 ~ 32,767
int4バイト約 -21億 ~ 21億
long8バイト約 -9京 ~ 9京
float4バイト約 ±3.4E38
double8バイト約 ±1.7E308
char2バイト0 ~ 65535(Unicode)
boolean1ビット相当(実装依存)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 = 'あ'; // 12354

boolean はサイズが明確に決まっていない

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
decopon

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

moco
moco

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

コメント

タイトルとURLをコピーしました