Java : Integer型とint型の違い
※自分用学習メモです
まとめ
intはプリミティブな整数型で、数値の演算や効率的な処理に適しています。
Integerはintをオブジェクトとして扱えるラッパークラスで、nullやコレクションに使う場合に便利です。
1. int型とは
intはJavaのプリミティブ(基本)データ型です。
32ビットの整数値を扱うために使われ、メモリ効率が良いです。
int型は直接数値を保持し、演算が高速に行えます。
例:
int num = 10;
2. Integer型とは
IntegerはJavaの**ラッパークラス(Wrapper Class)**で、int型のオブジェクトを扱うためのクラスです。
Integerはjava.langパッケージに含まれるクラスで、intの値をオブジェクトとして扱うことができます。
nullを使えるため、オブジェクトとして扱うコレクション(ArrayListなど)に格納したり、メソッドの引数や戻り値として使いやすくなっています。
例:
Integer numObj = 10;
3. int型とInteger型の主な違い
4. intとIntegerの相互変換(オートボクシングとアンボクシング)
Javaには、int型とInteger型の自動変換機能(オートボクシングとアンボクシング)があり、通常の使い方では違いをあまり意識する必要がありません。
オートボクシング:int → Integerへの自動変換
int num = 10;
Integer numObj = num; // intからIntegerへの自動変換
アンボクシング:Integer → intへの自動変換
Integer numObj = 20;
int num = numObj; // Integerからintへの自動変換
5. Integerが必要な場面
コレクション(ArrayList, HashMapなど)を使うとき
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // int型の10はInteger型にオートボクシングされる
nullを扱いたいとき(intはnullを扱えないため)
Integer num = null; // OK
int value = null; // コンパイルエラー
6. 注意点
nullの扱いに注意:Integerがnullの場合にアンボクシングしようとするとNullPointerExceptionが発生します。
Integer numObj = null;
int num = numObj; // ここでNullPointerExceptionが発生