【Java】int と Integer の違い:どちらを使うべき?

当ページのリンクには広告が含まれています。
目次

int と Integer

int

プリミティブ型(基本データ型)で、メモリ効率が良く、値そのものを直接保持する。

Integer

プリミティブ型をオブジェクトとして扱うためのラッパークラスです。java.lang.Integer クラスとして提供され、多くのユーティリティメソッドが利用可能です。

主な用途

  • int
    • 高速で、主に数値演算やメモリ効率が重要な場合
    • オブジェクト指向の特性を必要としない場合
  • Integer
    • コレクション(ListMap など)に数値を格納する場合。コレクションはオブジェクトしか扱えないため、int ではなく Integer である必要がある。
    • nullを扱いたい場合

オートボクシングとアンボクシング

Javaでは、intInteger 間の変換が自動的に行われる機能があります。

  • オートボクシング: intInteger に自動変換
  • アンボクシング: Integerint に自動変換

パフォーマンス

  • int:
    • 軽量でメモリ効率が良く高速。
  • Integer:
    • オブジェクトの生成や参照にコストがかかるため、int よりもパフォーマンスは劣る。

nullの扱い

  • int
    • プリミティブ型なので null は使用できない。
  • Integer
    • オブジェクト型なので null を代入できる。

まとめ

特性intInteger
種類プリミティブ型ラッパークラス
メモリ効率高い低い
演算の速度高速比較的低速
null の扱い不可可能
コレクションでの使用不可可能
主な用途通常の数値演算、軽量処理コレクションやnullが必要な場面

基本的にはint を使うことが多いようです。

nullの代入を考慮する必要があったり、オブジェクト型としてしか使えない場合はInteger を使います。

補足

intを使うべきか、Integerを使うべきかは正直なところ宗教論争だと思っています。

開発者個人の考えや、会社やチームとしてのスタイルがあるのでどちらを優先的につかうべきかはプロジェクトによって異なります。

正しい・正しくないという議論よりも、コードの統一感を優先した方が良い場合が多いので、プロジェクトの方針があればそちらに従う方がベターです。

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰。
現在はフリーランスエンジニア兼コアファクトリ合同会社代表。
得意な言語はJava。

新人教育経験あり(わからなくて進まない子を放置しない方針)
Javaの新人教育にお困りでしたらお声がけください。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次