【Java】どれを使えばいい?整数型(byte/short/int/long)の違いを徹底解説
はじめに
みなさんどうも、おげんです。
以前の記事では、Javaの基本となる「4つのデータ型」についてお話ししました。
その中で、整数を扱うときは int を使うと解説しましたが、実はJavaの世界には、整数を入れるための箱が他にも3つ(合計4つ)存在します。
「えっ、数字を入れるだけなのに、なんでそんなに種類があるの?」
「intだけじゃダメなの?」
勉強を始めたばかりの頃の私は、そう思って混乱してしまいました(笑)。
結論から言うと、これらは「入れる数字の大きさに合わせた、サイズの違う箱」なんです。
今回は、そんな整数型4兄弟(byte, short, int, long)の違いと、「結局どれを使えばいいの?」という疑問を、図解を使ってスッキリ解決していきたいと思います!
- int以外にも型があることを知って混乱している人
- longを使うときにLをつける理由が知りたい人
- 「基本データ型」の整理したい人
同じ「整数」でも箱のサイズが違う?
後に記述しますが、long型が一番大きな整数型です。
「全部一番大きな long に入れておけば、入りきらない心配がなくて安心じゃない?」
勉強を始めたばかりの頃、私はそう思っていました。でも、Javaではあえて箱のサイズを使い分けます。
なぜなら、コンピュータの「作業スペース(メモリ)」には限りがあるからです。
整数型4兄弟をイメージで理解しよう!
4種類の型を、新生活で使う「収納ボックス」のサイズに例えてみました。
※実際には1単位まで細かく決まっていますが、まずはイメージを掴んでもらうために「ざっくりとした数字」で紹介しますね!
| 型の名前 | 箱のサイズ | 扱える数字の目安 | イメージ |
|---|---|---|---|
| byte | 超極小 | -128 〜 127 | 小さな小物入れ |
| short | 小 | -3万 〜 3万 | 引き出し一つ分 |
| int | 標準 | -21億 〜 21億 | 衣装ケース(基本はこれ!) |
| long | 超特大 | 約-900京 〜 900京 | 大型コンテナ |
表だけではわかりづらいと思うので、具体例を用いて考えてみましょう。
もったいない「スペースの無駄遣い」
例えば、あなたが新居に「ペン1本」だけを運びたいとします。
- int / byte: 手持ちの小さなカバンや小箱に入れる(効率的!)
- long: バカでかい「大型コンテナ」を1台チャーターして、その中にポツンとペンを入れる(スペースの無駄遣い!)


ペン1本運ぶために大型コンテナを使っていたら、他の大事な荷物を積む場所がなくなってしまいますよね。
コンピュータもこれと同じです。 どんなに小さな数字でも、常に一番大きな long の箱を使っていると、コンピュータのメモリがすぐにいっぱいになってしまい、全体の動作が重くなってしまうんです。
「中身に対して、大きすぎず小さすぎない、ピッタリな箱を選ぶこと」
これが、効率よく動くプログラムを作るための大切なマナーなんです。
補足:正確な整数型4兄弟の範囲
「1単位まで決まってるって書いてたけど、正確にはどうなの?」と気になる方のために、一覧表を用意しました。今は「右に行くほど箱が大きくなるんだな」という眺め方でOKです!
| 型の名前 | 扱える範囲(正確な数値) | データの大きさ(ビット) |
| byte | -128 ~ 127 | 8 bit |
| short | -32,768 ~ 32,767 | 16 bit |
| int | -2,147,483,648 ~ 2,147,483,647 | 32 bit |
| long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 64 bit |
いきなりこの細かい数字を暗記するのは難しいと思います。
大切なのは数字を覚えることではなく、「箱(型)にはそれぞれ、物理的な限界があるんだ」ということを知っておくことです。
それさえ分かっていれば、もしエラーが出たときも「あ、箱が小さすぎたかな?」と自分で気づけるようになりますよ!
なぜ「int」が選ばれるのか?
Javaの世界ではint型が標準として使われており、それには理由があります。
- バランスの良さ: 21億という数字は、日常生活のほとんどの計算(年齢、個数、金額など)に十分なサイズです。
- コンピュータの得意分野: 今のコンピュータは
intのサイズを処理するのが一番得意で、効率が良いと言われています。
int型が扱えきれない21億を超えるような「国家予算」や「天文学的な数字」を扱うときだけ、最強の long 型を召喚するイメージです。
書き方の注意点(longにはLを!)
ここがJavaのちょっと面白いルールです。
long を使うときは、数字の最後に「これは特大サイズだよ!」と教えるために L をつけます。
long population = 8000000000L; // 数字の最後にLをつけるなぜ最後に「L」が必要なの?
一言でいうと、「Javaは数字を書き始めた瞬間、とりあえず『int(標準サイズ)』だと思い込んでしまうから」です。
Javaにはこんなクセがあります。
- あなたがコードに
8000000000(80億)と書く。 - Javaはそれを見た瞬間、「あ、数字だ!よし、標準サイズのintの箱(21億まで)に入れよう!」と勝手に判断します。
- でも、80億は
intの箱には入り切りません。 - そこでJavaはパニックになり、「これ、intの箱から溢れてるよ!」とエラーを出してしまいます。
これを防ぐために、「これは最初から特大サイズ(long)として扱ってね!」という合図を送る必要があります。それが数字の最後につける L なんです。
また、小文字の l だと数字の 1 と見間違えやすいので、大文字の L を使うのがエンジニアの鉄則です!
Lをつける=「予約票」を貼るイメージ
引っ越しで例えるなら、「荷物の外側に『特大サイズ・コンテナ行き』というラベルを貼っておく」ようなものです。
- ラベル(L)なし: 作業員(Java)が勝手に「これは普通の段ボール(int)でいけるな」と判断して、後で入らなくて困る。
- ラベル(L)あり: 最初から「あ、これは特大サイズか。大きなトラック(long)を準備しよう」とスムーズに動ける。
この「L」は、Javaに対して「勝手にintだと決めつけないで!」と念押しするための合図なんですね。
まとめ:迷ったらまずは「int」
今回は整数の4つの型について解説しました。
- 基本は
intを使う - 21億を超えるときだけ
longを使う(最後にLを忘れずに!) - byteやshortは、メモリを極限まで節約したいプロが使うもの(今は知っておくだけでOK!)
最初は「4つも覚えられない!」と思うかもしれませんが、まずは「基本はint、たまにlong」というルールだけ覚えておけば大丈夫です。
一歩ずつ、最適な箱を選べるようになっていきましょう!




