目次
int と Integer
int
プリミティブ型(基本データ型)で、メモリ効率が良く、値そのものを直接保持する。
1 2 3 |
int x = 10; |
Integer
プリミティブ型をオブジェクトとして扱うためのラッパークラスです。java.lang.Integer
クラスとして提供され、多くのユーティリティメソッドが利用可能です。
1 2 3 |
Integer y = 10; |
主な用途
- int
- 高速で、主に数値演算やメモリ効率が重要な場合
- オブジェクト指向の特性を必要としない場合
- Integer
- コレクション(
List
やMap
など)に数値を格納する場合。コレクションはオブジェクトしか扱えないため、int
ではなくInteger
である必要がある。 - nullを扱いたい場合
- コレクション(
オートボクシングとアンボクシング
Javaでは、int
と Integer
間の変換が自動的に行われる機能があります。
- オートボクシング:
int
→Integer
に自動変換 - アンボクシング:
Integer
→int
に自動変換
1 2 3 4 5 |
int a = 5; Integer b = a; // オートボクシング int c = b; // アンボクシング |
パフォーマンス
- int:
- 軽量でメモリ効率が良く高速。
- Integer:
- オブジェクトの生成や参照にコストがかかるため、
int
よりもパフォーマンスは劣る。
- オブジェクトの生成や参照にコストがかかるため、
nullの扱い
- int
- プリミティブ型なので
null
は使用できない。
- プリミティブ型なので
- Integer
- オブジェクト型なので
null
を代入できる。
- オブジェクト型なので
まとめ
特性 | int | Integer |
---|---|---|
種類 | プリミティブ型 | ラッパークラス |
メモリ効率 | 高い | 低い |
演算の速度 | 高速 | 比較的低速 |
null の扱い | 不可 | 可能 |
コレクションでの使用 | 不可 | 可能 |
主な用途 | 通常の数値演算、軽量処理 | コレクションやnull が必要な場面 |
基本的にはint
を使うことが多いようです。
nullの代入を考慮する必要があったり、オブジェクト型としてしか使えない場合はInteger
を使います。
補足
intを使うべきか、Integerを使うべきかは正直なところ宗教論争だと思っています。
開発者個人の考えや、会社やチームとしてのスタイルがあるのでどちらを優先的につかうべきかはプロジェクトによって異なります。
正しい・正しくないという議論よりも、コードの統一感を優先した方が良い場合が多いので、プロジェクトの方針があればそちらに従う方がベターです。
コメント