MEDIA

メディア

  1. TOP
  2. メディア
  3. プログラミング
  4. JavaのIntegerとは?intとの違い・比較の落とし穴・使い分け

JavaのIntegerとは?intとの違い・比較の落とし穴・使い分け

Javaで整数を扱うとき、intIntegerのどちらを使うべきか迷う場面は少なくありません。 一見すると同じ「数値」ですが、nullの扱い比較方法コレクションとの相性など、実務では明確な違いがあります。

結論から言うと、計算ロジックはint、未設定があり得る境界はIntegerという使い分けが最も安全です。 この判断を誤ると、NullPointerExceptionや比較バグにつながります。

本記事では、Integerとintの基礎から、オートボクシングの落とし穴、比較・変換の注意点、 そして現場で迷わない使い分け基準までを整理します。


Integerとintの基礎を押さえる

まず理解すべきなのは、intはプリミティブ型、Integerは参照型という点です。 この違いが、nullや比較の挙動に直結します。

intはプリミティブ型で値そのものを持つ

intは値そのものを直接保持する型です。 オブジェクト生成を伴わないため、高速かつ軽量に扱えます。

  • 計算処理・集計処理に向いている
  • nullは扱えない
  • ローカル変数は初期化必須

なお、フィールドとして宣言したintは自動的に0で初期化されます。 そのため、「未設定」と「0」の区別が必要な設計では注意が必要です。

Integerはラッパークラスでnullを扱える

Integerはintをオブジェクトとして扱うためのラッパークラスです。 参照型なので、nullを持てます。

  • DBのNULLや外部入力を自然に表現できる
  • コレクション(List / Map)で利用可能
  • 境界値(MAX_VALUE / MIN_VALUE)を定数で扱える

一方で、nullのまま計算に使うと例外が発生します。 この点は後ほど詳しく解説します。


intとIntegerの主な違い

実務で特に差が出やすいポイントは次の4つです。

  • nullを扱えるか
  • コレクションとの相性
  • パフォーマンス
  • 比較方法

nullを扱えるかどうか

intはnullを持てません。 そのため「未設定」「欠損」を表現できません。

一方、Integerはnullを扱えます。 DBや外部APIとの境界では便利ですが、そのまま使うと危険です。

特に注意すべきなのが、アンボクシング時のNullPointerExceptionです。 詳しくは以下の記事で実例付きで解説しています。

👉 java.lang.NullPointerExceptionの原因と直し方を最短で解説

コレクション(ListやMap)との相性

Javaのコレクションは参照型しか扱えません。 そのため、整数をListやMapに入れる場合はIntegerを使います。

特にArrayListを使う場面では、intとの違いを理解しておくと設計ミスを防げます。

👉 JavaのArrayListとは?配列との違い・使い方・実務での注意点

メモリとパフォーマンスの違い

パフォーマンス面ではintが有利です。 Integerはオブジェクト生成・GCのコストが発生します。

実務では次のように役割分担すると安全です。

  • 入力・DB・API境界:Integer
  • 内部ロジック・計算処理:int

オートボクシングとアンボクシングの落とし穴

JavaではintとIntegerの変換が自動で行われます。 これをオートボクシング/アンボクシングと呼びます。


Integer a = 10;
int b = a;

便利ですが、nullが混ざると一気に危険になります。

nullのIntegerをアンボクシングすると、実行時に例外が発生します。


Integer n = null;
int x = n; // NullPointerException

Integerの比較でやってはいけないこと

Integerの比較で最も多いミスは、==を使ってしまうことです。

==は値ではなく参照を比較します。 そのため、結果が環境や値によって変わることがあります。

比較の正しい考え方は、以下の記事で詳しく解説しています。

👉 Javaの文字列比較を徹底解説|==とequalsの違い・安全な比較方法

Integerでも基本は同じです。

  • 等価比較:equals / Objects.equals
  • 大小比較:compareTo / Comparator

実務での使い分け基準(迷ったらこれ)

最後に、迷ったときの判断基準をまとめます。

  • 計算・内部ロジック → int
  • DB・外部入力・API境界 → Integer
  • nullを許すなら、境界で必ず潰す

このルールを守るだけで、バグとレビューコストを大幅に減らせます。


つまずいたら、現役エンジニアと一緒に解決しよう

Integerとintの使い分けやnull設計は、独学だと理解が曖昧になりやすいポイントです。 実務レベルで確実に身につけたい方は、Zerocodeで現役エンジニアのサポートを受けながら学ぶのも一つの方法です。

現役エンジニア1on1

設計・コードレビューで理解を定着。

実務視点で学べる

Java / SQL / Spring Bootを体系的に習得。

Zerocodeを見てみる

Join us! 未経験からエンジニアに挑戦できる環境で自分の可能性を信じてみよう 採用ページを見る→

記事監修

ドライブライン編集部

[ この記事をシェアする ]

記事一覧へ戻る